238 votes

Comment faire une mise à jour en masse avec Django ?

J'aimerais mettre à jour une table avec Django - quelque chose comme ceci en SQL brut :

update tbl_name set name = 'foo' where name = 'bar'

Mon premier résultat est quelque chose comme ça - mais c'est méchant, n'est-ce pas ?

list = ModelClass.objects.filter(name = 'bar')
for obj in list:
    obj.name = 'foo'
    obj.save()

Existe-t-il un moyen plus élégant ?

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/

1voto

shivam sharma Points 61

IT retourne le nombre d'objets mis à jour dans la table.

update_counts = ModelClass.objects.filter(name='bar').update(name="foo")

Vous pouvez vous référer à ce lien pour obtenir plus d'informations sur la mise à jour et la création en masse. Mise à jour et création en masse

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X