¿Cómo usar el modelo de usuario en Django?

El sistema de autenticación incorporado de Django es excelente. En su mayor parte, podemos usarlo de inmediato, ahorrando mucho esfuerzo de desarrollo y prueba. Se adapta a la mayoría de los casos de uso y es muy seguro. Pero a veces necesitamos hacer algunos ajustes finos para que se ajusten a nuestra aplicación web. Por lo general, queremos almacenar algunos datos más relacionados con nuestro usuario, pero la siguiente pregunta podría ser cómo debería un desarrollador de Django hacer referencia a un usuario. Los documentos oficiales de Django enumeran tres formas separadas:

  • Usuario
  • AUTH_USER_MODEL
  • obtener_modelo_de_usuario()

Explicación:

Ilustración de cómo hacer referencia al modelo de usuario mediante un ejemplo. Considere un proyecto llamado mysite que tiene un blog de nombre de aplicación .

Consulte el siguiente artículo para comprobar cómo crear un proyecto y una aplicación en Django.
 

¿Cómo crear un proyecto básico usando MVT en Django?
    

¿Cómo crear una aplicación en Django?

Método 1: modelo de usuario directamente: 

Dentro de models.py agrega el siguiente código:

Python3

from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    content= models.TextField()
    def __str__(self):
        return self.title

Registre este modelo agregando el siguiente código dentro de admin.py.

from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)

Algunos tipos de proyectos pueden tener requisitos de autenticación para los cuales el modelo de usuario incorporado de Django no siempre es apropiado. Por ejemplo, en algunos sitios tiene más sentido usar una dirección de correo electrónico como su token de identificación en lugar de un nombre de usuario.

Django le permite anular el modelo de usuario predeterminado proporcionando un valor para la configuración AUTH_USER_MODEL que hace referencia a un modelo personalizado.

Método 2 – AUTH_USER_MODEL:

AUTH_USER_MODEL es el enfoque recomendado cuando se hace referencia a un modelo de usuario en un archivo models.py.

Para esto, debe crear un modelo de usuario personalizado mediante la subclase AbstractUser o AbstractBaseUser.

  • AbstractUser: use esta opción si está satisfecho con los campos existentes en el modelo de usuario y solo desea eliminar el campo de nombre de usuario.
  • AbstractBaseUser: use esta opción si desea comenzar desde cero creando su propio modelo de usuario completamente nuevo.

Consulte el artículo a continuación para crear un modelo de usuario personalizado:
 

Creación de un modelo de usuario personalizado

Si ya ha creado un modelo de usuario personalizado, digamos CustomUser en una aplicación llamada users , lo referenciará en su archivo settings.py de la siguiente manera:

#settings.py

AUTH_USER_MODEL = 'users.CustomUser'

Luego en el blog models.py agrega el siguiente código:

Python3

# blog/models.py
from django.conf import settings
from django.db import models
  
class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    content = models.TextField()

Registre este modelo agregando el siguiente código dentro de admin.py.

from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)

Método 3 – get_user_model() :

Si hace referencia a Usuario directamente (por ejemplo, al referirse a él en una clave externa), su código no funcionará en proyectos donde la configuración AUTH_USER_MODEL se haya cambiado a un modelo de usuario diferente.

La otra forma de hacer referencia al modelo de usuario es a través de get_user_model, que devuelve el modelo de usuario actualmente activo: ya sea un modelo de usuario personalizado especificado en AUTH_USER_MODEL o el usuario predeterminado predeterminado.

Dentro de models.py agrega el siguiente código:

Python3

from django.db import models
from django.contrib.auth import get_user_model
User=get_user_model()
# Create your models here.
class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)
    content= models.TextField()
    def __str__(self):
        return self.title

Registre este modelo agregando el siguiente código dentro de admin.py.

from django.contrib import admin
from .models import Post

# Register your models here.
admin.site.register(Post)

Producción – 

Creación de instancias con autor como usuario

Publicación traducida automáticamente

Artículo escrito por muskan24r y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *