python - 如何覆盖 Django 模型创建而不影响更新?

标签 python django

我重写了 Foo 类的 save() 方法,以便当我创建 Foo 实例时,会发生一些逻辑。效果很好。

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

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

重写__init__()方法而不是save()怎么样? (有人告诉我这是一个不好的做法,但不确定为什么)

谢谢。

最佳答案

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

完成您想要的操作的一个好方法是检查 save 方法中 self.pk 的值:如果它是 None,那么这是一个正在创建的新实例。

关于python - 如何覆盖 Django 模型创建而不影响更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248765/

相关文章:

python - 在 Python 中将 RGB 图像转换为灰度图像

Python:创建一个 n 次多项式

python - 如何使用 openpyxl 仅解析工作簿中的特定工作表 - 或者如何忽略空工作表?

python - 将 pandas df 写入 csv 时出现 Unicode 编码错误

django - 启动 django 开发服务器

django - 使用两个参数使用 Django DeleteView 进行删除

python - 使用内存 View 读取二进制文件

python - 使用 daphne : Requested setting INSTALLED_APPS, 部署 django Web 应用程序但未配置设置时出错

javascript - 将数据从 Javascript 发布到 Django 时如何修复 403(禁止)错误

python - Django 抽象模型与简单的 Python 混合与 Python ABCs