Python Django组在保存用户时不更新

Python Django组在保存用户时不更新,python,django,django-1.5,Python,Django,Django 1.5,我正在尝试在更改时将属于staff的用户添加到staff组。我尝试过使用信号和在用户模型中重载save,但它们似乎都不起作用。django在保存时是否有我不知道的限制 下面是我尝试使用的两个代码片段。用户继承自AbstractUser,并与新的Django 1.5特性AUTH_User_MODEL='app.User'一起使用,组是标准的AUTH组 class User(AbstractUser): def save(self, force_insert=False, force_upd

我正在尝试在更改时将属于staff的用户添加到staff组。我尝试过使用信号和在用户模型中重载save,但它们似乎都不起作用。django在保存时是否有我不知道的限制

下面是我尝试使用的两个代码片段。用户继承自AbstractUser,并与新的Django 1.5特性AUTH_User_MODEL='app.User'一起使用,组是标准的AUTH组

class User(AbstractUser):
    def save(self, force_insert=False, force_update=False, **kwargs):
        if self.is_staff:
            if not self.groups.filter(name='staff').exists():
                g = Group.objects.get(name='staff')
                g.user_set.add(self)
        else:
            if self.groups.filter(name='staff').exists():
                g = Group.objects.get(name='staff')
                g.user_set.remove(self)

        super(User, self).save(force_insert, force_update)


@receiver(post_save, sender=User)
def my_handler(sender, **kwargs):
    user = kwargs['instance']
    if user.is_staff:
        if not user.groups.filter(name='staff').exists():
            g = Group.objects.get(name='staff')
            g.user_set.add(user)
    else:
        if user.groups.filter(name='staff').exists():
            g = Group.objects.get(name='staff')
            g.user_set.remove(user)

如果使用
表单(ModelForm)
,则消失组的原因可能是在
用户.save()之后调用的
表单.save\m2m()
。例如,如果表单中有一个空的“groups”字段,
save_m2m
只会删除用户中的所有组。

我认为这是因为:如果不是user.groups.filter(name='staff').exists():。那条线是什么意思?如果存在人员,您将进行筛选,但如果user.is_staffe似乎正常,则您已将其放入。尝试另一种方法:如果不是self.groups.filter(name='staff').exists():self.groups.add(Group.objects.get(name='staff'))