我有一个过滤查询,它根据搜索条件而有所不同,
有时是:
Thing.object.filter(name__startswith=word).distinct('id')
而有时:
Thing.object.filter(city__startswith=word)
所以之后的一切都.filter(
可以改变。有没有办法动态设置它?
的论点.filter()
,是的。只需创建一个字典。
D = {'city__startswith': word}
things = Thing.object.filter(**D)
对 的调用.distinct()
,没有。您将需要特殊情况。
如果“城市”和“名称”是条件选择器的值,您可以执行以下操作:
queryset = Thing.object.filter(**{'%s__startswith' % criteria: word})
if criteria_requires_distinct:
queryset = queryset.distinct()