我覆盖了save()
类的Foo
方法,这样当我创建一个Foo实例时,会出现一些逻辑。效果很好。
尽管如此,我在其他类中还有更新 Foo
实例的其他方法,当然,我必须保存调用save()
方法的更改。但我希望它们能够直接更新而不会传递给我为对象创建所做的逻辑。
有一个优雅的解决方案吗?
如果覆盖__init__()
方法而不是save()
呢? (我被告知这是一个不好的做法,但不确定理解为什么)
谢谢。
答案 0 :(得分:3)
您不应该覆盖__init__
,因为在实例化模型的所有情况下都会调用它,包括从数据库加载模型时。
执行所需操作的一种好方法是检查save方法中self.pk
的值:如果为None,则这是一个正在创建的新实例。