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

246
Vistas
Guarde el modelo con @transaction.atomic en la vista basada en clases

Estoy tratando de manejar tanto agregar nuevo como editar objeto. Mi archivo views.py es como-

 personal_data=Personal.objects.create(emp_fname=first_name, emp_mname=middle_name, emp_lname=last_name) # rest of object is created here try: print "pk", pk with transaction.atomic(): if pk != None: print "hey" #save model goes here messages.add_message(request, messages.INFO, 'Data updated successfully') else: print "hello" personal_data.save() family_data.save() address_data.save() education_data.save() pre_company_data.save() messages.add_message(request, messages.INFO, 'Data saved successfully') except IntegrityError: handle_exception()

La condición if-else funciona correctamente pero los datos se guardan en ambos casos. incluso si comenté el código que se muestra arriba, los datos van a la base de datos.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Si quiere decir que personal_data se guarda en ambos casos, es porque está llamando a Personal.objects.create , que crea y guarda el modelo en la base de datos en un solo paso (referencia: https://docs.djangoproject.com/en /dev/topics/db/queries/#creating-objects ). Si desea separar la creación del guardado, cree el modelo utilizando el constructor habitual:

 personal_data = Personal(emp_fname=first_name, emp_mname=middle_name, emp_lname=last_name) try: with transaction.atomic(): if pk != None: # do stuff else: personal_data.save() # do some other stuff except IntegrityError: handle_exception()

En este caso, el modelo de datos_personales se guardará solo en la rama else.

about 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