7

我正在覆盖我的 Django 模型 save() 方法,因此我可以对对象进行一些额外的健全性检查。(save() 是正确的地方吗?)

我的 fixtures/initial_fixtures.yaml 对象似乎没有调用它们的 save() 方法。我怎样才能对我的固定装置进行健全性检查?

4

3 回答 3

10

从 Django 1.5 开始,不调用 save() :

处理夹具文件时,数据按原样保存到数据库中。不调用模型定义的 save() 方法,并且任何 pre_save 或 post_save 信号都将使用 raw=True 调用,因为实例仅包含模型本地的属性。

https://docs.djangoproject.com/en/1.9/ref/django-admin/

于 2013-07-25T12:58:12.860 回答
2

.save()方法在夹具加载期间调用,如https://code.djangoproject.com/browser/django/tags/releases/1.3.1/django/core/management/commands/loaddata.py?rev=17029#L174中所示

如果你使用不同的 DJ 版本,你可以检查一下,但我很确定它在旧版本中也会被调用。

你如何检查你的对象是否save()调用了它们的方法?

关于在 中执行此.save()操作,如果健全性检查不重要,那么我认为这不是一个好主意。

于 2011-10-24T19:05:39.323 回答
0

您的固定装置被认为是良好的数据,而不是有问题的输入,因此我不确定您何时需要对它们进行健全性检查。

如果您需要进行一些一次性初始验证,您可以通过管理员或应用程序中的某些东西将数据添加到您的数据库,然后将其导出为固定装置。

于 2011-10-24T18:20:34.770 回答