我不是百分百确定这是否只是我的一个糟糕的设计,或者我没有想清楚。
我正在Group
模型上使用allowed_groups
模型与Category
建立{m2}的关系。
class Category(models.Model):
"""Forums are separated into Categories. A Category may hold many Forums"""
name = models.CharField(max_length=80)
position = models.IntegerField(blank=True, default=0)
allowed_groups = models.ManyToManyField(
Group,
blank=True,
null=True,
help_text="Select what usergroups are able to see this forum.",
related_name='forum_categories',
)
class Meta:
ordering = ['position']
verbose_name = 'Category'
verbose_name_plural = 'Categories'
def __unicode__(self):
return u'%s' % self.name
我最初尝试使用m2m到User
模型,然而我很快就意识到,分配Category
实例User
可以看到的User
个实例会非常繁琐每次新的Category
注册。
我想要实现的目标是获取User
Group
应该能够看到的Group
实例所定义的forum_categories
个实例。问题是,他们是在任何给定时间都可能超过1 Category
。
我尝试使用反向{{1}},但如果它们在多个组中,则会返回{{1}}的重复项。
答案 0 :(得分:1)
distinct()
方法从查询集中删除重复的类别。试试这个:
Category.objects.distinct().filter(allowed_groups__in=user.groups.all())