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。
我想要这样的:
类RegularUserCreationForm(forms.ModelForm):... ...
@receiver(post_save, sender=RegularUser)
def link_user_admin(sender, instance, created, **kwargs):
if created:
instance.adminuser = request.user
但是adminuser不是RegularUser的字段。在信号中使用请求是被禁止的。有人能帮帮我吗?
发布于 2018-07-31 03:27:07
井。我已经找到了解决方案。我需要在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)
https://stackoverflow.com/questions/51562284
复制相似问题