如果kwargs参数为空,如何删除?

时间:2019-10-11 23:20:06

标签: python django postgresql kwargs

我正在处理参数和通过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是空的,这就是为什么我认为它不起作用,如果参数不为空,那么查询中就不会采用这种优雅的方式。

1 个答案:

答案 0 :(得分: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可能是列表或元组的列表,但是随后您必须键入很多'[]或'()'。