Django模型乘法滤波器

Django模型乘法滤波器,django,django-models,Django,Django Models,我想使用两个过滤器过滤我的模型对象。 因此,它可以是一个过滤器,也可以是两个过滤器,也可以是无过滤器。 我的解决方案是使用大量的“如果”: if _topic or _curator: if _topic and _curator: queryset = Article.objects.filter(topic=_topic,curator=_curator) elif _curator: queryset = Article.objects.fi

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

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()

有人能推荐一种更简单的过滤方法吗?

查询设置过滤器是累积的

queryset = Article.objects.all()
if _topic:
    queryset = queryset.filter(topic=_topic)
if _curator:
    queryset = queryset.filter(curator=_curator)
好吧,我的错,我想:“如果数据库中没有主题,那么即使它是数据库中的策展人,也不会返回任何内容。”。但现在我意识到,我的过滤器是由我点击主题或文章的策展人制作的)因此它在结果集中不可能是空的)
kwargs = {}
if _topic:
    kwargs[topic] = _topic
if _curator:
    kwargs[curator] = _curator
queryset = Article.objects.filter(**kwargs)