Estrategias para personalizar el usuario de Django

El sistema de usuarios integrado en Django es uno de los puntos fuertes de este magnifico framework, se adapta con facilidad a la mayoría de los proyectos, pero en muchas situaciones nos encontramos con requisitos que no se pueden satisfacer con la implementación por defecto.
Como norma general, podemos decir que existen cuatro estrategias diferentes para extender el modelo de usuarios de Django, ninguna de estas es una solución definitiva, la elección de una u otra estrategia dependerá del nivel de personalización y de los requisitos de autenticación de nuestro sistema.

 personalizar el usuario de Django
 Personalizar el usuario de Django

Modelo Proxy: 

Un Proxy Model es un modelo de herencia en el cual no se modifica el esquema de persistencia. Se utiliza para cambiar el comportamiento de un modelo existente.
El uso de un Proxy es recomendable cuando no necesitemos almacenar información extra en la base de datos, sino simplemente precisemos añadir algún método extra. Es la forma menos intrusiva de extender el modelo de usuarios, pero también es la más limitada.

Perfil de usuario:

La implementación de esta técnica se basa en utilizar un modelo estándar de Django el cual dispondrá de su propia tabla en la base de datos y una relación uno a uno con el modelo usuario por defecto. Esta aproximación nos será útil cuando requerimos almacenar información extra que no esté relacionada con el proceso de login.
Con toda probabilidad esta opción sea la que mejor se adecua a la mayoría de los casos. Básicamente crearemos un nuevo modelo de Django en el cual se almacenará toda la información extra. La aplicación de esta estrategia da como resultado una consulta extra a la base de datos, es importante contar con ello para no caer en el clásico problema del N+1, usando select_related o prefetch_related donde sea necesario.

Heredar de AbstractBaseUser: 

Esta estrategia se basa en construir un nuevo modelo heredando de la clase AbstractBaseUser, en esta ocasión es importante valorar si realmente lo necesitamos ya que el coste en tiempo de desarrollo puede ser elevado. Esta táctica se suele utilizar cuando necesitamos de requisitos concretos de autenticación, como podría ser utilizar el email o un teléfono como identificador de acceso.

Heredar de AbstractUser: 

Esta técnica la aplicaremos extendiendo de AbstractUser, la podemos utilizar cuando requiramos añadir algún campo al modelo existente y no se requiera de cambios en el sistema de autenticación, ya que en este caso, la autenticación de django cumpliría.

Para continuar profundizando en el tema te recomiendo que revises el artículo: Como extender el user de django

Gracias a Miguel A. Gómez, creador del artículo.
Twitter: https://twitter.com/miguelghz

  1. Unknown dice:

    Hola Diego:

    Muy buen artículo. No estaría demás acompañarlo con algunas imágenes y algo de código de ejemplo.

    Saludos
    EF

    1. PythonDiario dice:

      Hola Emilio, gracias por visitar el blog. Al final del artículo hay un enlace del compañero Miguel Gómez que explica mejor el tema. Saludos

  2. frciel dice:

    la verdad que python es un lenguaje estupendo por donde lo quieran ver deceo aprender a programar con python

    1. dcaraballo dice:

      Gracias por tu comentario y por visitar el blog. Saludos

Deja una respuesta

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

Subir
White Monkey