0

2つのフィルターを使用してモデルオブジェクトをフィルター処理したいと思います。したがって、フィルターは1つだけ、または両方にすることも、まったく使用しないこともできます。私の解決策は、多くの「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()

誰かがフィルタリングする簡単な方法を提案できますか?

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 に答える