我有鋪設出像這樣(有很多場)某些型號:Django模型 - 搜索與「落後」 ForeignKeys and'd Q的
class A(models.Model):
name = models.
class B(models.Model):
foo = models.ForeignKey(A)
和我有一個使用Q
一個搜索系統對象; 0
和1
是主鍵,由ModelMultipleChoiceField
以一種形式獲得,並且它們的foo
都指向相同的A
。
所以對或邏輯,我可以用這個
>>> A.objects.filter(Q(b__pk=0) | Q(b__pk=1))
[<A: A object>, <A: A object>]
,我可以用
A.objects.filter(Q(b__pk=0) | Q(b__pk=1)).distinct()
不過,我也想這樣做and
邏輯解決重複。理想情況下,它可以使用&
而不是|
,但這不起作用。
>>> A.objects.filter(Q(b__pk=0) & Q(b__pk=1))
[]
那麼,最簡單的方法是什麼?
我不知道queryset的'__and__'做了連接。不錯。我會看看你的解決方案,如果以後工作... – forivall 2012-03-22 07:29:06
是的,完美的作品。我使用了第二個,因爲我更喜歡使用Q對象,因爲我做了'query = reduce(Q .__ and__,queries)' – forivall 2012-03-23 00:17:08