Voici un contenu utile que j'ai trouvé sur Internet concernant la question ci-dessus.
https://www.sankalpjonna.com/learn-django/running-a-bulk-update-with-django
La méthode inefficace
model_qs= ModelClass.objects.filter(name = 'bar')
for obj in model_qs:
obj.name = 'foo'
obj.save()
La méthode efficace
ModelClass.objects.filter(name = 'bar').update(name="foo") # for single value 'foo' or add loop
Utilisation de bulk_update
update_list = []
model_qs= ModelClass.objects.filter(name = 'bar')
for obj in model_qs:
model_obj =ModelClass.object.get(id=obj.id)
model_obj.name = "foo" # Or what ever the value is for simplicty im providing foo only
update_list.append(model_obj)
ModelClass.objects.bulk_update(update_list,['name'])
Utilisation d'une transaction atomique
from django.db import transaction
with transaction.atomic():
model_qs = ModelClass.objects.filter(name = 'bar')
for obj in model_qs:
ModelClass.objects.filter(name = 'bar').update(name="foo")
Des votes positifs ? Merci d'avance : Merci de votre attention ;)
1 votes
Vous recherchez peut-être un insert de lot. Jetez un coup d'œil à stackoverflow.com/questions/4294088/
0 votes
Je n'aime pas insérer de nouvelles données, mais seulement mettre à jour les données existantes.
3 votes
Peut-être avec l'aide de select_for_update ? docs.djangoproject.com/fr/dev/ref/models/querysets/
0 votes
Ce qui n'est pas désagréable dans le
ModelClass
approche ? Alors nourrissez-vous à Django comme : stackoverflow.com/questions/16853649/