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

1.1K
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar

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 Denunciar

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 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