Si vous savez que vous voulez le créer :
Book.objects.create(**d)
Si vous devez vérifier si une instance existe déjà, vous pouvez la trouver avec get_or_create:
instance, created = Book.objects.get_or_create(slug=slug, defaults=d)
if not created:
for attr, value in d.items():
setattr(instance, attr, value)
instance.save()
Comme mentionné dans une autre réponse, vous pouvez également utiliser la fonction update
sur le gestionnaire de requêtes, mais je crois que cela n'enverra pas de signaux (ce qui peut ne pas vous importuner si vous ne les utilisez pas). Cependant, vous ne devriez probablement pas l'utiliser pour modifier un seul objet :
Book.objects.filter(id=id).update()
2 votes
Oui. Essayez. Recherchez l'opérateur
**
dans le manuel de référence du langage Python. docs.python.org/reference/expressions.html#calls0 votes
Possible duplicate de Mettre à jour modèle django via kwargs