Models.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将此常规用户链接到AdminUser,以便此RegularUser拥有AdminUser。 AdminUser可以在adminSite中管理此RegularUser。
我想要这样的东西:
Class RegularUserCreationForm(forms.ModelForm)类: ... ...
@receiver(post_save, sender=RegularUser)
def link_user_admin(sender, instance, created, **kwargs):
if created:
instance.adminuser = request.user
但是adminuser不是RegularUser的字段。并且禁止在信号中使用请求。有人可以帮我吗?
答案 0 :(得分:0)
好吧。我找到了解决方案。我需要在post_save方法中使用该请求。但是,您不能在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)