Django - Как сбросить образцовые поля к их значению по умолчанию?

Какова была бы большая часть elegant\efficient способа сбросить все поля определенного образцового экземпляра назад к их значениям по умолчанию?

9
задан Jonathan 12 July 2010 в 04:14
поделиться

3 ответа

Однажды я сделал это таким образом. Лучшего способа я не смог придумать.

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()

Примечание: В моем случае все поля имели значение по умолчанию.

Надеюсь, это поможет. Счастливого кодинга.

6
ответ дан 2 November 2019 в 23:58
поделиться

После того, как вы внесли изменения в этот экземпляр, но до того, как вы его "сохранили", я полагаю? Я думаю, что вам, вероятно, придется повторно получить его из базы данных... Я не думаю, что экземпляры моделей Django хранят "историю" изменений, которые были сделаны в экземпляре.

0
ответ дан 2 November 2019 в 23:58
поделиться

Назначьте полям None и сохраните.

1
ответ дан 2 November 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: