提示:在“CustomUser.user_permissions”或“User.user_permissions”的定义中添加或更改 related_name 参数

Ros*_*oss 5 python django django-models abstractuser

我需要帮助。我正在 Django 中创建一个应用程序,但在迁移自定义用户的类时遇到一些问题。错误是:

ERRORS: auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'Usuario.groups'.
HINT: Add or change a related_name argument to the definition for 'User.groups' or 'Usuario.groups'. auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'Usuario.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'Usuario.user_permissions'. usuarios.Usuario.groups: (fields.E304) Reverse accessor for 'Usuario.groups' clashes with reverse accessor for 'User.groups'.
HINT: Add or change a related_name argument to the definition for 'Usuario.groups' or 'User.groups'. usuarios.Usuario.user_permissions: (fields.E304) Reverse accessor for 'Usuario.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'Usuario.user_permissions' or 'User.user_permissions'.
Run Code Online (Sandbox Code Playgroud)

现在,这是我的代码:

我的型号:

ERRORS: auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'Usuario.groups'.
HINT: Add or change a related_name argument to the definition for 'User.groups' or 'Usuario.groups'. auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'Usuario.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'Usuario.user_permissions'. usuarios.Usuario.groups: (fields.E304) Reverse accessor for 'Usuario.groups' clashes with reverse accessor for 'User.groups'.
HINT: Add or change a related_name argument to the definition for 'Usuario.groups' or 'User.groups'. usuarios.Usuario.user_permissions: (fields.E304) Reverse accessor for 'Usuario.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'Usuario.user_permissions' or 'User.user_permissions'.
Run Code Online (Sandbox Code Playgroud)

在我的settings.py

from django.db import models from django.contrib.auth.models import AbstractUser from django.conf import settings

class CustomUser(AbstractUser):
    email = models.EmailField(unique=True, max_length=80)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['USERNAME']

def __str__(self):
    return self.email

class Perfil(models.Model):
    user=models.OneToOneField(CustomUser, related_name="usuario_user" , on_delete=models.CASCADE)                             
    nacionality= models.ForeignKey(Paises, on_delete=models.DO_NOTHING)    
    rol= models.ForeignKey(Rol, on_delete=models.DO_NOTHING) def str(self): return self.CustomUser
    birth_date=models.DateField()

Run Code Online (Sandbox Code Playgroud)

ric*_*mba 3

您可以更改继承的基本模型,而不是AbstractUser,只需使用User即可:

from django.contrib.auth.models import User

class CustomUser(User):
    email = models.EmailField(unique=True, max_length=80)
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['USERNAME']

    def __str__(self):
        return self.email
Run Code Online (Sandbox Code Playgroud)

参考此参考https://docs.djangoproject.com/fr/4.0/topics/auth/customizing/#extending-the-existing-user-model

现在效果会更好。非常感谢您的提问。

并在settings.py中正确添加这一行:

AUTH_USER_MODEL = 'name_of_app.NameOfModel'
Run Code Online (Sandbox Code Playgroud)