Какова была бы большая часть elegant\efficient способа сбросить все поля определенного образцового экземпляра назад к их значениям по умолчанию?
Однажды я сделал это таким образом. Лучшего способа я не смог придумать.
from django.db.models.fields import NOT_PROVIDED
for f in instance._meta.fields:
if f.default <> NOT_PROVIDED:
setattr(instance, f.name, f.default)
# treatment of None values, in your words, to handle fields not marked with null=True
...
...
# treatment ends
instance.save()
Примечание: В моем случае все поля имели значение по умолчанию.
Надеюсь, это поможет. Счастливого кодинга.
После того, как вы внесли изменения в этот экземпляр, но до того, как вы его "сохранили", я полагаю? Я думаю, что вам, вероятно, придется повторно получить его из базы данных... Я не думаю, что экземпляры моделей Django хранят "историю" изменений, которые были сделаны в экземпляре.