如何創建一個「AND」過濾器來檢索Django中的對象?例如,我想要檢索在單個字段中具有兩個單詞的組合的行。如何在Django過濾器中使用AND?
例如,下面的SQL查詢正是這麼做的,當我在MySQL數據庫運行:
select * from myapp_question
where ((question like '%software%') and (question like '%java%'))
如何使用過濾器,你做到這一點在Django?
如何創建一個「AND」過濾器來檢索Django中的對象?例如,我想要檢索在單個字段中具有兩個單詞的組合的行。如何在Django過濾器中使用AND?
例如,下面的SQL查詢正是這麼做的,當我在MySQL數據庫運行:
select * from myapp_question
where ((question like '%software%') and (question like '%java%'))
如何使用過濾器,你做到這一點在Django?
mymodel.objects.filter(first_name__icontains="Foo", first_name__icontains="Bar")
更新:因爲我寫了這個答案,並做了一些Django的,但我相信這天最好的辦法是使用像大衛·伯格將q對象的方法很長一段時間顯示在這裏:stackoverflow.com/ A /63097分之770078
你可以連續過濾器表達式在Django:
q = Question.objects.filter(question__contains='software').filter(question__contains='java')
您可以在 「Chaining Filters」 Django文檔的詳細信息。
爲了徹底起見,我們只提Q
對象的方法:
from django.db.models import Q
criterion1 = Q(question__contains="software")
criterion2 = Q(question__contains="java")
q = Question.objects.filter(criterion1 & criterion2)
注意這裏的其他答案更簡單,更好地適應你的使用情況,但如果有人有類似,但稍微複雜的問題(如需要「不」或「或」)看到這一點,這是很好的參考權利在這裏。
這對Django 1.6和Postgres來說並不適合我。每當有兩個或更多相同的關鍵字時,我會收到「重複的SyntaxError:關鍵字參數」。只有David Berger提出的Q解決方案纔有效。 – margusholland 2014-05-30 07:32:54
@margusholland答案適用於Django 1.6和Postgres。你能發佈你的查詢嗎?它與Q對象方法一樣正式。 https://docs.djangoproject.com/zh/dev/topics/db/queries/#spanning-multi-valued-relationships – Medorator 2014-07-08 19:15:12
我有一個短國家代碼字段(cc_short)的國家: >>>國家= Country.objects.filter(cc_short__icontains ='A',cc_short__icontains ='B') 文件「」,第1行 SyntaxError:重複的關鍵字參數 –
margusholland
2014-07-09 08:56:10