在Django中创建user时,如何将用户添加到ManyToManyField



型号.py:

class RegularUser(MyUser):
MyUser.is_staff = False
MyUser.is_superuser = False
class Meta:
verbose_name = 'Usuario Regular'
verbose_name_plural = 'Usuarios Regulares'

class AdminUser(MyUser):
usuarios = models.ManyToManyField(RegularUser, help_text="Selecciona los usuarios que administra", blank=True)
MyUser.is_staff = True
class Meta:
verbose_name = 'Administrador'
verbose_name_plural = 'Adminsitradores'

我想要下一个:我以AdminUser的身份登录管理网站,它具有员工权限。然后我可以创建RegularUsers。当我创建一个新的RegularUser时,我希望通过ManyToManyField将此RegularUser链接到AdminUser,以便此Regular用户拥有AdminUser。AdminUser可以在adminSite中管理此RegularUser。

我想要这样的:

类RegularUserCreationForm(forms.ModelForm(:。。。…

@receiver(post_save, sender=RegularUser)
def link_user_admin(sender, instance, created, **kwargs):
if created:
instance.adminuser = request.user

但是adminuser不是RegularUser的一个字段。禁止在信号中使用请求。有人能帮帮我吗?

好吧。我找到了解决办法。我需要在postrongave方法中使用请求。但是,您不能在Django信号中使用它,因此可以使用Django save_model方法,您可以访问该请求。

def save_model(self, request, obj, form, change):
if obj:
# Save the object
super().save_model(request, obj, form, change)
# Add the user instance to M2M field of the request.user (The admin User) who create the RegularUser 
request.user.adminuser.usuarios.add(obj)

最新更新