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