Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

496
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!