2010-08-05 106 views
1

鑑於以下兩個型號檢查過濾模型:由存在於另一個模型通過多對多關係

class Card(models.Model): 
    disabled = models.BooleanField(default=False) 

class User(models.Model): 
    owned_cards = models.ManyToManyField(Card) 

給定一個特定的用戶,我怎麼能在一個查詢,得到的是不是所有的卡對象禁用,並且也出現在該用戶的owned_cards字段中?

回答

5

其實很簡單,您可以使用用戶對象的owned_cards字段作爲管理器。

enabled_cards = theuser.owned_cards.filter(disabled=False) 

答案在評論第二個問題,這應該工作,使用Q objects否定查找。

not_owned_cards = Card.objects.filter(~Q(id__in=theuser.owned_cards.all()), disabled=False) 
+0

廢話,好吧,如果你想獲得所有不存在於owned_cards字段中的牌? – synic 2010-08-05 21:16:10