首页 > 解决方案 > 使用多个变量过滤 Django 查询集

问题描述

我想传递一个或多个GET变量来过滤查询集。我尝试使用以下代码创建变量字典并应用过滤器,但使用两个变量进行测试似乎只过滤最终的字典变量。

for k,v in mydict.items():
    qs = mymodel.objects.filter(**{"%s__contains" % k: v})

谁能指出我在哪里出错的正确方向?

标签: djangodjango-modelsdjango-queryset

解决方案


您正在从头开始在每次迭代中创建一个新的查询集,而不是链接它们。尝试将您的代码更改为:

qs = mymodel.objects.all()
for k, v in mydict.items():
    qs = qs.filter(**{"%s__contains" % k: v})

推荐阅读