我正在使用django-filter應用程序。然而,有一個問題我不知道如何解決。這幾乎完全一樣Django文檔中描述了同樣的事情:將幾個過濾器組合成一個過濾器()與Django過濾器
https://docs.djangoproject.com/en/1.2/topics/db/queries/#spanning-multi-valued-relationships
我想打一個查詢,我選擇在標題和與都「儂」的條目的所有博客是在2008年出版,如:
Blog.objects.filter(entry__headline__contains='Lennon',
entry__pub_date__year=2008)
,不要選擇在標題爲「列儂」的條目並於2008年出版的另一入口(可能是相同的)博客:
Blog.objects.filter(entry__headline__contains='Lennon').filter(
entry__pub_date__year=2008)
然而,如果我設置過濾器,使得有兩個字段(沒關係__contains X __exact,只是一個例子):
class BlogFilter(django_filters.FilterSet):
entry__headline = django_filters.CharFilter()
entry__pub_date = django_filters.CharFilter()
class Meta:
model = Blog
fields = ['entry__headline', 'entry__pub_date', ]
Django的過濾器將generete後者:
Blog.objects.filter(entry__headline__exact='Lennon').filter(
entry__pub_date__exact=2008)
有沒有辦法將兩個過濾器合併到一個過濾器字段中?
對不起,復活這種老線,但 'Foo.objects.filter(FOO = 「酒吧」)過濾器(qux = 「QUUX」) ' 實際上與 相同'Foo.objects.filter(foo =「bar」,qux =「quux」)' 多個關鍵字參數和隨之而來的過濾器被「AND」編輯在一起。要創建「OR」過濾器,您必須使用'Q'對象:https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects – cvk
@cvk hi ,根據https://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships(包括dev和1.2版本)使用兩個鏈接過濾器產生「選擇所有包含在標題中加入「Lennon」的條目以及2008年發佈的條目「但使用帶有逗號的單一條款時,它會生成」選擇包含標題爲「Lennon」且2008年出版的條目的所有博客(滿足兩個條件的同一條目)「。這是一個巨大的差異。我還沒有找到使用django-filter的方法 –