在加载Django灯具时没有调用model.save()?

时间:2011-10-24 18:15:58

标签: django testing fixtures django-fixtures sanity-check

我重写了我的Django模型save()方法,所以我可以对该对象进行一些额外的健全性检查。 (save()是否正确执行此操作?)

我的fixtures / initial_fixtures.yaml对象看起来没有调用save()方法。我怎样才能理智地检查我的装置?

3 个答案:

答案 0 :(得分:8)

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

  

处理夹具文件时,数据将保存到数据库中   是。未调用模型定义的save()方法,以及任何pre_save或   post_save信号将仅使用raw = True调用   包含模型本地的属性。

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

答案 1 :(得分: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()中这样做,如果理智检查不重要,那么我认为这不是一个好主意。

答案 2 :(得分:1)

你的灯具被认为是好的数据,而不是有问题的输入,所以当你需要对它们进行健全检查时,我不确定这是一个好的案例。

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