【发布时间】:2014-05-20 13:32:26
【问题描述】:
我得到了使用基本 ModelForm 的简单 CreateView,我想在创建此特定对象后为当前用户添加 can_view 权限。据我了解,必须在保存对象后完成。我应该为此使用post_save 信号吗?请记住,我不想在修改现有对象时触发它。
【问题讨论】:
标签: django django-models permissions django-class-based-views django-guardian
我得到了使用基本 ModelForm 的简单 CreateView,我想在创建此特定对象后为当前用户添加 can_view 权限。据我了解,必须在保存对象后完成。我应该为此使用post_save 信号吗?请记住,我不想在修改现有对象时触发它。
【问题讨论】:
标签: django django-models permissions django-class-based-views django-guardian
这可以在模型保存方法中完成
class MyModel(models.Model):
def save(self):
if 'pk' not in self:
#add you permission code here
super(MyModel, self).save()
它的作用是检查你的对象是否有主键。如果不是,那么这是一个新对象,应该创建权限。如果有一个主键,那么这个对象正在被编辑,不应添加任何权限。
【讨论】:
argument of type 'ModelName' is not iterable 与if 'pk' not in self: 上线
if 'pk' not in self.__dict__ 有效。但正如我之前写的ObjectNotPersisted: Object firn lastn needs to be persisted first