Y a-t-il une façon de sauvegarder le modèle à l'aide du dictionnaire
pour par exemple.
Cela fonctionne bien, p> mais si j'ai un dictionnaire comme {"nom": "Sondage", 'Description: "Description de Sondage"} P> Y a-t-il un moyen simple d'enregistrer le tel dictionnaire directement au sondage p> p>
4 Réponses :
Vous pouvez déballer le dictionnaire, faire de ses clés et de ses valeurs comme des arguments nommés:
La solution de DRMEGAHERTZ fonctionne si vous créez un nouvel objet à partir de zéro. Dans votre exemple, cependant, vous semblez vouloir mettre à jour un objet existant. Vous le faites en accédant à l'attribut __ dict __ code> que chaque objet Python a:
Cela peut être très utile pour maintenir le principe sec en faisant des trucs difficiles sur la méthode Save () code> de
modelform code>. Par exemple, j'ai un formulaire AA qui copie
nettoyé_data code> vers un nouveau dictionnaire, puis supprime certains champs de celui-ci - car les valeurs d'autres champs les rendent non pertinents ou contradictoires - ne sauvent que les champs restants en ce sens que Dictionnaire sur l'instance (et l'instance est un objet qui a déjà été initialisé).
Je trouve que cette variante a fonctionné pour moi clairement. Également dans ce cas, tous les signaux seront déclenchés correctement
p1 = Poll.objects.get(pk=1) values = { 'name': 'poll2', 'description': 'poll2 description' } for field, value in values.items(): if hasattr(p1, field): setattr(p1, field, value) p1.save()
Vous pouvez y parvenir en utilisant Mise à jour sur Un fichier filtre:
par exemple: p> notes: strong> p>
.update code> ne déclenche pas les signaux li>
si p1.count () == 1: ... code> li>
__ code> tels que
__ dict __. code> li>
ul> p>