Red de conocimiento informático - Material del sitio web - Cómo utilizar correctamente el modelo de usuario

Cómo utilizar correctamente el modelo de usuario

1. Determine 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.