Django - 如何将模型字段重置为其默认值?

Jon*_*han 9 django django-models

什么是将某个模型实例的所有字段重置为默认值的最优雅\有效方法?

sim*_*rsh 6

我曾经这样做过.没有更好的方式我能想到.

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()
Run Code Online (Sandbox Code Playgroud)

注意:在我的情况下,所有字段都有默认值.

希望它会有所帮助.快乐的编码.


Ign*_*ams 1

分配None给字段,然后保存。

  • 难道这不是只在一小部分情况下有效吗?例如,它适用于未标记为 Blank=True 和 null=True 的字段吗? (2认同)