首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Django中创建用户时,如何将用户添加到ManyToManyField?

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

Stack Overflow用户
提问于 2018-07-28 00:44:49
回答 1查看 405关注 0票数 0

Models.py:

代码语言:javascript
复制
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):... ...

代码语言:javascript
复制
@receiver(post_save, sender=RegularUser)
def link_user_admin(sender, instance, created, **kwargs):
    if created:
        instance.adminuser = request.user

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 03:27:07

井。我已经找到了解决方案。我需要在post_save方法中使用请求。但是,您不能在Django信号中使用它,因此可以使用Django save_model方法来访问请求。

代码语言:javascript
复制
    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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51562284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档