save_model 中的代码在第二次保存时执行,而不是第一次
code in save_model executed on second save, not first
我在我的 UserAdmin 中定义了一个 save_model 来更改用户的对象级权限。
class UserAdmin(BaseUserAdmin):
def save_model(self, request, obj, form, change):
obj.save()
allprojects = Project.objects.all()
projects = obj.workingproject.all()
remove_perm("view_project", obj, allprojects)
assign_perm("view_project", obj, projects)
obj.save()
remove_perm和assign_perm是django-guardian的快捷方式,workingproject是用户的M2M字段。
问题:选择不同的项目并保存权限时不会更改,但是第二次按“保存”按钮可以根据需要进行更改。我做错了什么?
尝试覆盖 save_related
def save_related(self, request, form, formsets, change):
super(UserAdmin, self).save_related(request, form, formsets, change)
obj = form.instance
allprojects = Project.objects.all()
projects = obj.workingproject.all()
remove_perm("view_project", obj, allprojects)
assign_perm("view_project", obj, projects)
在 save_related
中,Django 正在删除已经存在的 M2M 并设置新的。因此,在 save_model
和 save
中所做的更改不会反映出来。
我在我的 UserAdmin 中定义了一个 save_model 来更改用户的对象级权限。
class UserAdmin(BaseUserAdmin):
def save_model(self, request, obj, form, change):
obj.save()
allprojects = Project.objects.all()
projects = obj.workingproject.all()
remove_perm("view_project", obj, allprojects)
assign_perm("view_project", obj, projects)
obj.save()
remove_perm和assign_perm是django-guardian的快捷方式,workingproject是用户的M2M字段。
问题:选择不同的项目并保存权限时不会更改,但是第二次按“保存”按钮可以根据需要进行更改。我做错了什么?
尝试覆盖 save_related
def save_related(self, request, form, formsets, change):
super(UserAdmin, self).save_related(request, form, formsets, change)
obj = form.instance
allprojects = Project.objects.all()
projects = obj.workingproject.all()
remove_perm("view_project", obj, allprojects)
assign_perm("view_project", obj, projects)
在 save_related
中,Django 正在删除已经存在的 M2M 并设置新的。因此,在 save_model
和 save
中所做的更改不会反映出来。