我正在构建的 web 应用程序上的用户有多个“他们的”对象让我们假设该对象被调用Toy
。
我希望他们能够为他们Toy
的 s 设置隐私选项,以便他们可以设置以下可见性选项:
- 朋友的朋友
- 朋友们
- 只允许一组定义的人
- 仅限朋友,但拒绝一组人(对某些人保密)
所以说我有这样的模型:
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
在一次访问数据库中生成一个对象列表。
还是我以错误的方式接近这个?