如何在不影响更新的情况下覆盖Django模型创建?

时间:2014-04-23 15:24:17

标签: python django

我覆盖了save()类的Foo方法,这样当我创建一个Foo实例时,会出现一些逻辑。效果很好。

尽管如此,我在其他类中还有更新 Foo实例的其他方法,当然,我必须保存调用save()方法的更改。但我希望它们能够直接更新而不会传递给我为对象创建所做的逻辑。

有一个优雅的解决方案吗?

如果覆盖__init__()方法而不是save()呢? (我被告知这是一个不好的做法,但不确定理解为什么)

谢谢。

1 个答案:

答案 0 :(得分:3)

您不应该覆盖__init__,因为在实例化模型的所有情况下都会调用它,包括从数据库加载模型时。

执行所需操作的一种好方法是检查save方法中self.pk的值:如果为None,则这是一个正在创建的新实例。