我想使用两个过滤器过滤我的模型对象。 因此,它可以只是一个过滤器,或两者兼而有之。 我的解决方案是使用很多'if':
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()
有人可以建议更简单的过滤方式吗?
答案 0 :(得分:1)
Queryset过滤器是累积的。
queryset = Article.objects.all()
if _topic:
queryset = queryset.filter(topic=_topic)
if _curator:
queryset = queryset.filter(curator=_curator)
答案 1 :(得分:1)
kwargs = {}
if _topic:
kwargs[topic] = _topic
if _curator:
kwargs[curator] = _curator
queryset = Article.objects.filter(**kwargs)