我正在使用save_model将用户添加到特定组
def UserAdmin(UserAdmin):
def save_model(self, request, obj, form, change):
adminOb = Group.objects.get(name='Administrator')
adminOb.user_set.add(obj.pk)
adminOb.save()
obj.save()
此代码未将obj.pk
添加到“adminOb”,但是当我在终端中执行此操作时,我可以保存
在终端我做了这个
adminOb = Group.objects.get(name='Administrator')
adminOb.user_set.add(44)
adminOb.save()
注意:我使用werkzeug调试工具,通过它我可以在浏览器中进行控制,我在此控制台中进行了测试,因为控制台出现在浏览器中页面应该有一些错误,所以我没有使用adminOb.save()
adminOb.saved()
,然后在控制台中运行此adminOb.save()
,令人惊讶的是这是保存adminOb
答案 0 :(得分:1)
我做的错误是我没有排除使用表单字段覆盖用户组的组
fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser'
)}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
答案 1 :(得分:0)
def save_model(self, request, obj, form, change):
obj.save()
adminOb = Group.objects.get(name='INDURE USER')
adminOb.user_set.add(obj.pk)
adminOb.save()
尝试这样做是因为在多个字段中,在获取另一个字段的id之前,它无法设置字段值。在未创建用户之前,它无法设置其组,因此首先我们需要保存对象,然后添加修改或更新。因此,一旦在多个到多个字段的情况下创建对象,它就会保存。因此,这是Django中许多字段的事务问题。 并且不要忘记在“字段”中排除组。