Changer la valeur d’un champs de toutes les entrées de la base en Django


il arrive parfois qu’on ai besoin de changer la valeur d’un champs de toutes les entrées d’une table. Par exemple un champs “online” sur 300 entrées que l’on veut mettre à “offline”.

On peut utiliser pour celà la propriété update

Dans le shell:

In [2]: Movie.objects.filter(online=True).update(online=False)
Out[2]: 360L

360 est le nombre d’entrées modifiées. On peut spécifier plusieurs champs à modifier, par exemple:

In [2]: Movie.objects.filter(online=True).update(online=False, views=0)
Out[2]: 360L

2 thoughts on “Changer la valeur d’un champs de toutes les entrées de la base en Django

  • machin

    Bon, ce post est plus tout jeune, mais je viens de tomber dessus. Alors merci bien pour le tip.

    En passant, quand vous voulez exécuter des commandes django depuis un script isolé (par exemple pour mettre à jour une base de donnée), vous faites ça avant de lancer le script ?

    export DJANGO_SETTINGS_MODULE=yoursite.settings

    Ou bien vous avez une autre recette ?

    Et bravo pour votre boulot sur ce blog. C’est peu à grâce à vous si je commence à devenir un pythoniste.

Comments are closed.

Des questions Python sans rapport avec l'article ? Posez-les sur IndexError.