鉴于以下两个模型:
class Card(models.Model):
disabled = models.BooleanField(default=False)
class User(models.Model):
owned_cards = models.ManyToManyField(Card)
鉴于某个用户,我如何在一个查询中获取所有未禁用的Card对象,并且还存在于该用户的owned_cards字段中?
答案 0 :(得分: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)