Cómo utilizar correctamente el modelo de usuario
Recomendamos utilizar el siguiente método para determinar el modelo de usuario utilizado por un proyecto Django específico:
# Cuando se utiliza el modelo de usuario predeterminado
>>> de django.contrib.auth import get_user_model
>>> get_user_model()
2 Utilice settings.AUTH_USER_MODEL Desde Django 1.5, los usuarios pueden personalizar los modelos de usuario. 5, los usuarios pueden personalizar el modelo de usuario. Si necesitan utilizar un modelo de usuario con claves externas, el método recomendado oficialmente es el siguiente: Establezca AUTH_USER_MODEL en la configuración: En la configuración. El método para configurar AUTH_USER_MODEL en AUTH_USER_MODEL es el siguiente: El método para configurar AUTH_USER_MODEL en settings.USER_MODEL es el siguiente: El método para configurar AUTH_USER_MODEL en settings.AUTH_USER_MODEL es el siguiente. sigueUSER_MODEL: # settings.py # Formato " AUTH_USER_MODEL = "myapp.NewUser" en models.py Usado en # models.py de la configuración de importación de django.conf de los modelos de importación de django.db clase Artículo(modelos .Model): autor = modelos.ForeignKey(settings.AUTH_USER_MODEL) título = modelos.CharField(max_length=255) También tenga en cuenta que no utilice get_user_model() en claves externas. 3. Personaliza el modelo de usuario Método 1: extiende la clase AbstractUser Si estás muy satisfecho con el modelo de usuario que viene con Django, pero lo deseas. campos adicionales, puede extender la clase AbstractUser: # myapp/ models.py de django.contrib.auth.models import AbstractUser de django. modelos de importación de base de datos clase NewUser(AbstractUser). new_field = models.CharField(max_length=100) No olvides configurar: AUTH_USER_MODEL = "myapp.NewUser" Método 2: ampliar la clase AbstractBaseUser AbstractBaseUser solo contiene tres campos: contraseña, last_login e is_active. Si no está satisfecho con el nombre predeterminado, apellido del modelo de usuario de Django, o si no está satisfecho con el nombre predeterminado, apellido, o simplemente desea mantener el almacenamiento de contraseña predeterminado, entonces este es el enfoque que debe tomar. . Método 3: uso de OneToOneField Si desea crear un módulo de terceros y publicarlo en PyPi, el módulo debe almacenar información adicional para cada usuario según el usuario. usuario = models.OneToOneField(settings.AUTH_USER_MODEL) sabores_inventados = modelos.ManyToManyField(Flavor, null=True, white=True) Utilice el Método anterior, podemos usar user.easterprofile.flavor_ice_cream para obtener el archivo de configuración correspondiente. La desventaja de utilizar este enfoque puede ser que aumenta la complejidad del código.