Mettre à jour les données dans la base de données
Les méthodes et fonctions suivantes permettent de mettre à jour les données existantes dans une base de données.
-
update(each: bool = False, **kwargs) -> int -
update_or_create(**kwargs) -> Model -
bulk_update(objects: List[Model], columns: List[str] = None) -> None -
Modèle de
- Modèle.update() méthode
- Modèle.upsert() Méthode
- Model.save_lated() Méthode
-
Query Set Agent pour
-
QuerysetProxy.update_or_create(**kwargs)Méthodes
Actualités
update(each: bool = False, **kwargs) -> int
Les mises à jour de niveau QuerySet sont utilisées pour mettre à jour plusieurs enregistrements avec la même valeur à la fois.
Vous devez soit filtrer le QuerySet en premier, soit fournir l'attribut each=True pour mettre à jour l'ensemble de la table.
Si vous ne fournissez pas ce drapeau ou ce filtre, une QueryDefinitionError est levée.
Renvoie le nombre de lignes mises à jour.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |
!!!Les mises à jour d'avertissement doivent être précédées d'un filtrage des ensembles de requêtes pour éviter les écrasements accidentels.
1 | |
Mettre à jour ou créer
update_or_create(**kwargs) -> Model
Mettez à jour le modèle ou créez un nouveau modèle s'il n'y a pas de correspondance dans la base de données.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
Notez que si vous souhaitez créer un nouvel objet, vous devez soit passer la valeur de la colonne pk, soit la colonne pk doit être réglée sur incrémentation automatique.
Mise à jour en masse
bulk_update(objects: List["Model"], columns: List[str] = None) -> None
Permet la mise à jour de plusieurs instances à la fois.
Tous les modèles passés doivent remplir la colonne de clé primaire.
Vous pouvez également sélectionner les champs à mettre à jour en passant la liste des colonnes comme une liste de noms de chaînes.
1 2 3 4 5 6 7 8 9 10 11 | |
Approche modèle
Chaque instance de modèle dispose d'un ensemble de méthodes pour sauvegarder, mettre à jour ou se charger.
Actualité
Vous pouvez mettre à jour un modèle en mettant à jour les propriétés du modèle (champs) et en appelant la méthode update().
Si vous essayez de mettre à jour un modèle sans définir de clé primaire, une exception ModelPersistenceError est levée.
!!!tip En savoir plus sur la méthode update() dans models-update
Mise à jour insérée
C'est un proxy pour les méthodes save() ou update(**kwargs) du modèle. si pk est défini, la méthode update() est appelée.
!!!tip Lire plus sur la méthode upsert() dans models-upsert
Sauvegarder en relation
Une méthode parcourt toutes les relations du modèle qui l'a appelée et appelle la méthode upsert() sur chaque modèle non enregistré.
!!!tip En savoir plus sur la méthode save_lated() dans models-save-lated
La méthode QuerysetProxy
Lorsque vous accédez directement au champ ManyToMany associé, ainsi qu'à la clé ReverseForeignKey, une liste des modèles associés est renvoyée.
Mais en même temps, il expose un sous-ensemble de l'API QuerySet, de sorte que vous pouvez filtrer, créer, sélectionner des modèles pertinents, etc. directement à partir du modèle parent.
Mettre à jour ou créer
Exactement comme la fonction update_or_create ci-dessus, mais vous permet de mettre à jour ou de créer des objets associés de l'autre côté de la relation.
!!!conseil Pour en savoir plus sur Querysetproxy, visitez la section Querysetproxy