Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

491
Vistas
Django: hacer que el correo electrónico del usuario sea obligatorio

Para mi aplicación, se debe requerir el campo de correo electrónico de un Usuario. Ese no es el caso para el modelo de usuario predeterminado. Así que pensé que tendría sentido crear un modelo de usuario personalizado como se describe en los documentos :

Si está comenzando un nuevo proyecto, se recomienda configurar un modelo de usuario personalizado, incluso si el modelo de usuario predeterminado es suficiente para usted. Este modelo se comporta de manera idéntica al modelo de usuario predeterminado, pero podrá personalizarlo en el futuro si surge la necesidad:

 from django.contrib.auth.models import AbstractUser class User(AbstractUser): email = models.EmailField(_('email address'), blank=False)

Sin embargo, no estoy seguro de si esa es la forma correcta de lograr esto.

La razón es que aquí los documentos de Django dicen:

Las clases base abstractas son útiles cuando desea poner información común en una serie de otros modelos. Escribes tu clase base y pones abstract=True en la clase Meta. Este modelo no se utilizará para crear ninguna tabla de base de datos. En cambio, cuando se usa como clase base para otros modelos, sus campos se agregarán a los de la clase secundaria. Es un error tener campos en la clase base abstracta con el mismo nombre que los del elemento secundario (y Django generará una excepción).

¿Qué debería hacer ahora?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Tengo que responder a mi pregunta porque ahora sé la solución:

La forma en que describí en la publicación de inicio debería funcionar. Los documentos están mal: https://code.djangoproject.com/ticket/29192

over 4 years ago · Santiago Trujillo Denunciar

0

agregar en models.py

 from django.contrib.auth.models import User User._meta.get_field('email')._unique = True User._meta.get_field('email').blank = False User._meta.get_field('email').null = False
over 4 years ago · Santiago Trujillo Denunciar

0

Editar: debe subclasificar AbstractBaseUser e implementar todos los demás atributos también.

 from django.contrib.auth.models import AbstractBaseUser, UserManager class User(AbstractBaseUser): email = models.EmailField(_('email address'), blank=False) objects = UserManager()

Segunda edición:

La respuesta de Aliquis es la correcta . La documentación actual es simplemente incorrecta : "Es un error tener campos en la clase base abstracta con el mismo nombre que los del elemento secundario (y Django generará una excepción)".

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda