如果为空则删除kwargs参数?

问题描述 投票:0回答:1

我正在处理参数和我通过GET进行的变量并且我收到执行我的查询集的问题,问题是,如果我收到一个空参数不起作用,我将用代码解释更多。

我的网址示例:

http://127.0.0.1:8000/my_view/?val1=xd&val2=lol&sox=

我的view.py

val1 = request.GET.get('val1', None)
val2 = request.GET.get('val2', None)
foo = request.GET.get('lol', None)

filters = {
    'code_field': val1,
    'tiempo_field__lte': val2,
    'code_id__exact': foo,
}

my_query = Babies.object.filter(**filters)

在此示例中,sox是空的,这就是为什么我认为它不起作用,如果在查询中未采用参数为空的话,这将是一种优雅的方式。

python django postgresql kwargs
1个回答
0
投票

过滤器过滤器

使用字典理解来过滤该过滤器,以删除任何与值不相关的key:value对:

filters = {key:value for key,value in 
              {
                  'code_field': val1,
                  'tiempo_field__lte': val2,
                  'code_id__exact': foo,
              }.items()
              if value is not None }

内部dict可能是列表或元组的列表,但是随后您必须键入很多'[]或'()'。

© www.soinside.com 2019 - 2024. All rights reserved.