我正在处理参数和通过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是空的,这就是为什么我认为它不起作用,如果参数不为空,那么查询中就不会采用这种优雅的方式。
答案 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可能是列表或元组的列表,但是随后您必须键入很多'[]或'()'。