【发布时间】:2012-10-26 03:54:30
【问题描述】:
我正在启动一个具有复杂权限结构的应用程序,这将不可避免地由用户自己管理。我在模型中有以下权限:
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)
不过,一般来说,我更愿意将这些类型的事件排除在我的视野之外。
覆盖 save()
这个方法的问题是我必须给用户对象的保存访问权限,这意味着还要覆盖 init 来设置 self.request = request。
post_save 信号
我知道我可以利用这个信号,但与前两个相比,我还没有尝试过实现它。
希望这能提供足够的洞察力,让我了解我的情况。
我很想知道这些方法中最好的方法是什么,或者,如果它们都是坏主意,那么替代实现可能是什么。
谢谢,
京东
【问题讨论】: