Обновление Django DeserializedObject
У меня есть динамически загружаемый объект из json-файла.
Согласно документации, я могу сохранить объект таким образом:
for deserialized_object in serializers.deserialize("json", data):
if object_should_be_saved(deserialized_object):
deserialized_object.save()
Однако, если объект уже существует в базе данных, я вполне справедливо получаю django.db.utils.IntegrityError: duplicate key value violates unique constraint
.
Я не вижу ничего в документации, что позволило бы сделать deserialized_object.update()
вместо deserialized_object.save()
. Возможно ли это?
Вы можете использовать update_or_create
и model_to_dict
:
from django.forms.models import model_to_dict
for deserialized_object in serializers.deserialize("json", data):
if object_should_be_saved(deserialized_object):
DeserializedObject.objects.update_or_create(
id=deserialized_object.id,
defaults={k: v for (k, v) in
model_to_dict(deserialized_object).items()
if k != 'id'}
)