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

1.1K
Views
Diferencia entre User.objects.create_user() vs User.objects.create() vs User().save() en django

En la documentación de Django, usa User.objects.create_user() para crear un usuario. Estoy confundido, ¿cuál es la diferencia entre eso y User.objects.create() y User().save() , que son las formas normales de crear objetos de otros modelos?

over 4 years ago · Santiago Trujillo
5 answers
Answer question

0

La diferencia más significativa es que si proporciona una contraseña para el método .create() , se establecerá textualmente en el usuario y no se podrá utilizar para autenticar al usuario.

 >>> user = User.objects.create(username="foo", password="bar") >>> user.password 'bar' >>> user.check_password("bar") False

En su lugar, el método create_user() el argumento de la contraseña, que es entonces.

 >>> user = User.objects.create_user(username="foo", password="bar") >>> user.password 'pbkdf2_sha256$120000$2pHBVu3tYYbK$ESG1nbUY2ZhEmstJ7Fzu1DioXmGYXiLw31YDkOGn9E0=' >>> user.check_password("bar") True

Consulte https://github.com/django/django/blob/master/django/contrib/auth/models.py#L145 .

También se hace algún otro 'ordenamiento'. Vea el resto de la función vinculada arriba.

over 4 years ago · Santiago Trujillo Report

0

User.objects.create_user() es una función de ayuda que proporciona utilidades útiles para crear un usuario que, de lo contrario, tendría que hacer usted mismo. Según la documentación:

Crea, guarda y devuelve un Usuario

El nombre de usuario y la contraseña se establecen como se indica. La parte del dominio del correo electrónico se convierte automáticamente a minúsculas y el objeto Usuario devuelto tendrá is_active establecido en True .

Si no se proporciona una contraseña, se llamará a set_unusable_password() .

Los argumentos de la palabra clave extra_fields se pasan al método __init__ del usuario para permitir establecer campos arbitrarios en un modelo de usuario personalizado.

Sin create_user() , podría crear la funcionalidad usted mismo utilizando los métodos que mencionó, pero proporciona un procesamiento y una utilidad útiles.

over 4 years ago · Santiago Trujillo Report

0

create() y save() son métodos genéricos para crear una instancia de modelo. No hacen nada específico para el modelo de usuario, mientras que el método create_user() es un método específico para crear el usuario.

Al crear un usuario con métodos genéricos, el valor que establezca como contraseña no se codificará. Debe hacerlo usted mismo de esta manera.

 u = User(username="username") u.set_password("password") u.save()

Además, no puede hacer lo mismo con el método create() sin una consulta de base de datos adicional.

Mientras que con create_user() el nombre de usuario y la contraseña se establecen como se indicaron y la contraseña se codificará automáticamente y el objeto Usuario devuelto tendrá is_active establecido en True

over 4 years ago · Santiago Trujillo Report

0

Debería obtener el modelo de usuario:

 from django.contrib.auth import get_user_model UserModel = get_user_model() user = UserModel.objects.create(username="Mr Foo", password="bar") user.save()

O:

 user = UserModel.objects.create_user("Mr Foo", password="bar") user.save()
over 4 years ago · Santiago Trujillo Report

0

Si usa create_user() no necesita guardarlo con save() . create_user() ya guarda al usuario en la base de datos, consulte: https://docs.djangoproject.com/en/4.0/topics/auth/default/

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!