class Profile(models.Model):
    pass

class Experience(models.Model):
    profile = models.ForeignKey(Profile)

Comment enregistrer un profil avec une liste d'expériences avec une seule transaction ?

En ce moment je fais ce qui suit

p = Profile()
p.save()

e_list = [Experience(profile=p), Experience(profile=p)]
Education.objects.bulk_create(e_list)

Ce qui correspond à deux accès à la base de données, puis-je le faire en un ?

0
Walton Wang 19 févr. 2020 à 18:36

1 réponse

Meilleure réponse

Utilisez transaction.atomic afin d'avoir plusieurs requêtes dans la même transaction :

from django.db import transaction

with transaction.atomic():
    p = Profile()
    p.save()

    e_list = [Experience(profile=p), Experience(profile=p)]
    Education.objects.bulk_create(e_list)
1
Horatiu Jeflea 19 févr. 2020 à 16:00