我有一個模型Django應用程序如下:Django的兩個約束條件篩選的相關模型
一個
Question
模型的
Answer
模式,用一個ForeignKey 回到剛纔的問題。 (一個問題可以 有多個答案。)一個
Flag
模式,用一個ForeignKey到 應答。 (一個答案可以被標記 爲不適當。)
所有上述的也有一個user
字段,定義創建該對象的用戶。
我試圖從當前用戶已被標記的答案得到所有問題的列表。我嘗試這樣做:
Question.objects.filter(answer__user=user).\
filter(answer__flag__isnull=False).distinct()
...但我相信,這將返回從當前用戶,並與已標記的答案正確答案的問題的列表,但不一定會保證它是用戶的答案已經被標記。
有沒有簡單的方法來做到這一點?基本上,我想讓answer
過濾器的一部分在兩者上都指向相同的答案。
請讓我知道,如果有什麼不清楚。
我不知道我明白。第一個過濾器會給我一組所有的問題,至少有一個來自該用戶的答案。然後,第二個過濾器將返回符合標準答案的問題。但是,如果問題Q1分別具有來自用戶U1和U2的答案A1和A2,並且標記了A2,那麼這個查詢是否不會爲U1和U2返回Q1? 是的,你完全正確的關於isnull = False;我會解決這個問題。 – 2010-04-02 16:09:50
啊哈。事實證明,如果我把它們都放在同一個過濾器調用中,那麼它會做我想要的。 (有關更多信息,請參見http://docs.djangoproject.com/en/dev/topics/db/queries/#spanning-multi-valued-relationships。) – 2010-04-02 17:13:32
請注意,根據文檔,這不起作用'.exclude()'相同 – 2016-10-27 14:08:39