我正在启动一个具有复杂权限结构的应用程序,这将不可避免地由用户自己管理。我在模型中有以下权限:
class Meta:
permissions = (
('can_view', 'View project'),
('manage_view', 'Can assign View project'),
('can_edit', 'Edit project'),
('manage_edit', 'Can assign Edit project'),
('can_delete', 'Delete project'),
('manage_delete', 'Can assign Delete project'),
('creator', 'Full access to model features.'),
)
这些将使用 Django-guardian 在对象级别进行管理,我正在使用自定义 mixins 来处理所有各种组合和功能。
“创建者”权限分配给对象的初始创建者,他们可以通过基于电子邮件的邀请系统将其他权限分配给用户。
我的问题围绕着为创建对象分配创建者权限的选项。
到目前为止我想到的一些方法:
保存后在视图中分配
newObject.save()
assign('creator', User, newObject)
一般来说,我更喜欢将这些类型的事件排除在我的观点之外。
覆盖保存()
这种方法的问题是我必须授予对 User 对象的保存访问权限,这意味着还要覆盖init以设置 self.request = request。
post_save 信号
我知道我可以利用这个信号,但与前两个相比,我还没有尝试过实现它。
希望这能提供足够的洞察力来了解我在哪里做的事情。
我很想知道这些方法中最好的方法是什么,或者,如果它们都是坏主意,那么替代实现可能是什么。
谢谢,
京东