【发布时间】:2010-09-29 13:57:06
【问题描述】:
我正在构建的 web 应用程序上的用户有多个“他们的”对象让我们假设该对象称为 Toy。
我希望他们能够为其Toys 设置隐私选项,以便他们可以设置以下可见性选项:
- 朋友的朋友
- 朋友
- 只允许定义的一组人
- 仅限朋友,但拒绝一组人(对某些人保密)
所以说我有这样的模型:
class User(models.Model): # actually a profile but simplifying
friends = models.ManyToManyField(User, through='Friendship')
class Toy(models.Model):
owner = models.ForeignKey(User)
我正在努力了解如何对权限数据和逻辑进行分层。
我可以添加一个 permission_state 变量来存储上述选项,然后为选项 #3 和 #4 设置一个 m2m,或者为 DENY 和 ALLOW 设置单独的 m2ms。
但是给定User,我将如何过滤用户可以看到的所有玩具,而无需进行大量不同的查询?理想情况下,我希望在一次访问数据库时生成Toy 对象列表。
还是我用错了方法?
【问题讨论】:
标签: django django-models django-permissions