Python 检查queryset中的任何对象是否处于多个关系中

Python 检查queryset中的任何对象是否处于多个关系中,python,django,manytomanyfield,Python,Django,Manytomanyfield,我希望能够做到的与此伪代码类似-我完全不知道如何在python中做到这一点: user_groups = request.user.participant_groups.all() if group in user_groups not in self.object.settings.groups.all(): 基本上,我想检查user_组中的任何对象是否在self.object.settings.groups.all()中。有没有一个简单的方法可以做到这一点 型号: cla

我希望能够做到的与此伪代码类似-我完全不知道如何在python中做到这一点:

    user_groups = request.user.participant_groups.all()
    if group in user_groups not in self.object.settings.groups.all(): 
基本上,我想检查user_组中的任何对象是否在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)
我要做的是检查用户的任何参与者组(与组模型上的用户相反)是否处于设置对象组多人关系中。

试试这个-

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
实例。你应该说清楚。

你看过Django关于许多关系的文档吗?@Bibhas是的,我看过。你觉得有什么特别能帮我的吗?我想你没有。在许多关系文档中都解释了如何使用它在查询中执行
。什么是
self.object.settings.groups.all()
?查询集?字典?列表?这是一个反向的ManyToManyField,所以是的,一个查询集。但没有一个例子与我的用例相似。我的两个查询集都来自已经获取的模型的相关字段。您能显示模型吗?否则人们会猜你在问什么。请解释您的具体问题。
request.user.participant\u groups.all()
这不是已经可以解决的问题了吗。设置\u与\u用户中的\u组\u参与者\u组=settings.objects.filter(user=request.user,groups\u in=request.user.participant\u组.all())@kracekumar是的。只是不确定
中的
\u是否接受查询测试。刚刚确认。Thanks@kracekumar但根据医生的说法,这并不可取。最好提取一个ID列表并通过,我一定没有很好地解释自己。我希望最终得到的查询集是一组对象,我需要对这些对象进行计数。我再试一次。设置对象可以有多个组。一个用户也可以有多个组。我试图查看设置对象的组中是否有任何用户组。所以我不想收集设置查询集。在设置对象的组中?或者在属于该用户的设置对象组中?