django模型选择满足标准并采用交叉点的用户

时间:2012-09-13 11:07:55

标签: django django-models

我有以下两种数据库模型:

class UserProfile(models.Model):
    description = models.TextField()

class Channel(models.Model):
    subscribed = models.ManyToManyField(UserProfile, 
                                        related_name="subscribed")

鉴于,我希望在一列中显示订阅该频道的用户以及未订阅到其他列中的频道的频道。 获得订阅频道的用户不会有任何问题。如何选择未订阅频道的用户以及发送未订阅的用户的用户个人资料对象。

2 个答案:

答案 0 :(得分:2)

只需使用exclude代替filter

答案 1 :(得分:0)

c = Channel.objects.get(pk=1)
subscribed = c.subscribed_set.all()
not_subscribed = UserProfile.objects.exclude(pk__in=[s.pk for s in subscribed])