Python 基于可选参数筛选Django中的对象

Python 基于可选参数筛选Django中的对象,python,django,django-orm,Python,Django,Django Orm,很多时候,我发现自己编写的代码类似于: query = MyModel.objects.all() if request.GET.get('filter_by_field1'): query = query.filter(field1 = True) if request.GET.get('filter_by_field2'): query = query.filter(field2 = False) field3_filter = request.GET.get('field3

很多时候,我发现自己编写的代码类似于:

query = MyModel.objects.all()
if request.GET.get('filter_by_field1'):
    query = query.filter(field1 = True)
if request.GET.get('filter_by_field2'):
    query = query.filter(field2 = False)
field3_filter = request.GET.get('field3'):
if field3_filter is not None:
    query = query.filter(field3 = field3_filter)
if field4_filter:
    query = query.filter(field4 = field4_filter)
# etc...
return query

是否有一种更好、更通用的方法来构建上述查询?

如果request GET中只有潜在的查询参数,您可以这样做:

query = MyModel.objects.filter(**request.GET)

这是有道理的。两个问题:(1)并非所有参数都来自
请求。GET
(只是编辑了问题以反映这一点)和(2)我不想允许对每个字段进行筛选。好的,您可以使用来自请求和其他地方的参数组合建立字典,并在必要时进行清理;理论是一样的。