0

我有一个过滤查询,它根据搜索条件而有所不同,

有时是:

Thing.object.filter(name__startswith=word).distinct('id')

而有时:

Thing.object.filter(city__startswith=word)

所以之后的一切都.filter(可以改变。有没有办法动态设置它?

4

2 回答 2

3

的论点.filter(),是的。只需创建一个字典。

D = {'city__startswith': word}
things = Thing.object.filter(**D)

对 的调用.distinct(),没有。您将需要特殊情况。

于 2013-05-20T15:16:56.763 回答
2

如果“城市”和“名称”是条件选择器的值,您可以执行以下操作:

queryset = Thing.object.filter(**{'%s__startswith' % criteria: word})

if criteria_requires_distinct:
    queryset = queryset.distinct()
于 2013-05-20T15:21:45.720 回答