无法从save_model向用户添加组,但可以从终端执行

时间:2013-07-23 17:35:55

标签: django django-models save django-admin

我正在使用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

2 个答案:

答案 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中许多字段的事务问题。 并且不要忘记在“字段”中排除组。