我有一个过滤查询,具体取决于搜索条件,
有时是:
Thing.object.filter(name__startswith=word).distinct('id')
有时候:
Thing.object.filter(city__startswith=word)
所以.filter(
之后的所有内容都可以改变。有没有办法动态设置它?
答案 0 :(得分:3)
.filter()
的论据,是的。只需创建一个字典。
D = {'city__startswith': word}
things = Thing.object.filter(**D)
致.distinct()
的电话,没有。你需要特殊情况。
答案 1 :(得分:2)
如果'city'和'name'是条件选择器的值,您可以执行以下操作:
queryset = Thing.object.filter(**{'%s__startswith' % criteria: word})
if criteria_requires_distinct:
queryset = queryset.distinct()