检查查询集中的任何对象是否属于ManyToMany关系

时间:2014-03-24 18:16:24

标签: python django manytomanyfield

我希望能够做的是类似于这个伪代码 - 我只是完全不知道如何在python中执行此操作:

    user_groups = request.user.participant_groups.all()
    if group in user_groups not in self.object.settings.groups.all(): 

基本上,我想检查user_groups中的任何对象是否在self.object.settings.groups.all()中。有一种简单的方法可以做到这一点吗?

型号:

class Group(models.Model):
    participants = models.ManyToManyField('auth.User', null=True, blank=True, related_name='participant_groups')
    title = models.CharField(max_length=180)
    date = models.DateTimeField(null=True, blank=True, editable=False)
    modified = models.DateTimeField(null=True, blank=True, editable=False)

class Settings(models.Model):
    user = models.ForeignKey('auth.User', related_name='settings_objects')
    groups = models.ManyToManyField('groups.Group', null=True, blank=True)
    participants = models.ManyToManyField('auth.User', null=True, blank=True, related_name='accessible_objects')
    private = models.BooleanField(default=True)

我要做的是检查用户的participant_groups(与组模型上的用户的反向关系)是否在设置对象组中有多种关系。

1 个答案:

答案 0 :(得分:0)

试试这个 -

common_groups = user.participant_groups.annotate(
    num_settings=Count('settings_objects')
).filter(num_settings__gt=0)

# You can get a count like this
count_of_above = common_groups.count()

我假设self.object.settings是当前用户的Settings实例。你应该说清楚。