请考虑以下模型:
class Administrator(AbstractBaseUser, PermissionsMixin):
etc
class Issuer(models.Model):
lists = models.ManyToManyField(List, etc)
class List(models.Model):
issuer = models.ForeignKey(Issuer, etc)
class Member(models.Model):
lists = models.ManyToManyField(List, etc)
issuer = models.ForeignKey(Issuer, etc)
在此应用中:
List
都属于Issuer
Member
都属于Issuer
List
具有一个或多个Members
,Members
可以位于一个或多个Lists
Issuer
可以有一个或多个Administrators
,Administrators
可以有一个或多个Issuers
Administrators
是使用contrib.auth
问题1
我希望只允许Administrators
创建/查看/编辑Lists
和Members
,它们与之共享相同的Issuer
。我怎样才能做到这一点?我认为最简单的方法是在渲染每个视图时查询用户会话?
问题2
我希望Administrators
能够在他们有权访问的Issuers
之间进行切换,以便在他们创建/查看列表或成员时自动保存Issuer
。想象一下导航栏中的“发行人1,发行人2,发行人3等”中的选择字段。
最简单的方法是什么?通过URL传递issuer.pk
来呈现每个视图并使用对Q1的权限,还是有一种更干净的方法?我是否需要像django-guardian
这样的更复杂的对象级权限?