我重写了 Foo
类的 save()
方法,以便当我创建 Foo 实例时,会发生一些逻辑。效果很好。
尽管如此,我在其他类中还有其他方法可以更新 Foo
实例,当然,我必须调用 save()
方法。但我希望它们直接更新,而不传递到我为对象创建所做的逻辑。
有一个优雅的解决方案吗?
重写__init__()
方法而不是save()
怎么样? (有人告诉我这是一个不好的做法,但不确定为什么)
谢谢。
最佳答案
您不应覆盖 __init__
,因为在实例化模型时(包括从数据库加载模型时)的所有情况下都会调用它。
完成您想要的操作的一个好方法是检查 save 方法中 self.pk
的值:如果它是 None,那么这是一个正在创建的新实例。
关于python - 如何覆盖 Django 模型创建而不影响更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248765/