0

我想使用两个过滤器过滤我的模型对象。因此,它可以只有一个过滤器,也可以是两者,也可以没有。我的解决方案是使用大量的“如果”:

if _topic or _curator:
    if _topic and _curator:
        queryset = Article.objects.filter(topic=_topic,curator=_curator)
    elif _curator:
        queryset = Article.objects.filter(curator=_curator)
    else # so topic is the last choice
        queryset = Article.objects.filter(topic=_topic)
else
    queryset = Article.objects.all()

有人可以建议一种更简单的过滤方法吗?

4

2 回答 2

1

查询集过滤器是累积的。

queryset = Article.objects.all()
if _topic:
    queryset = queryset.filter(topic=_topic)
if _curator:
    queryset = queryset.filter(curator=_curator)
于 2012-06-20T10:48:57.323 回答
1
kwargs = {}
if _topic:
    kwargs[topic] = _topic
if _curator:
    kwargs[curator] = _curator
queryset = Article.objects.filter(**kwargs)
于 2012-06-20T10:53:51.493 回答