假设在我的django应用程序的模型中,我有三个模型,每个模型都有许多对多的关系(这是一个玩具示例)。
class User(models.Model):
permissions_group = models.ManyToManyField(Group)
class Group(models.Model):
permissions_area = models.ManyToManyField(Area)
class Area(models.Model):
#other irrelevant field data...
pass
我希望在我的模型上有一个字段,它表达了用户和区域之间的关系,这是一个隐式的多对多模型(也就是说,我不定义在数据库中创建其他表的其他关系,我使用通过组的关系)。User
我考虑过使用自定义管理器,但这似乎不允许使用标准相关字段管理器看到的那种关系过滤;我可以简单地在类上设置一个装饰属性:
class User(models.Model):
@property
permissions_areas(self):
return Area.objects.filter(group__in=self.permissions_groups.all())
但这似乎很笨拙,并且不使用任何django约定。有没有一种传统的方法可以在django中使用Django的工具(自定义管理器或类似的东西)来做到这一点,而我错过了?RelatedManager
郎朗坤
相关分类