我希望能够做的是类似于这个伪代码 - 我只是完全不知道如何在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(与组模型上的用户的反向关系)是否在设置对象组中有多种关系。
答案 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
实例。你应该说清楚。