【问题标题】:Django loaddata returns DeserializationError: 'NoneType' object has no attribute '_meta'Django loaddata 返回 DeserializationError: 'NoneType' 对象没有属性 '_meta'
【发布时间】:2013-10-08 10:46:21
【问题描述】:

我有一个来自我想要加载的转储数据的 json 文件,并且在一段时间后执行 loaddata 时它返回此消息:

DeserializationError: 'NoneType' object has no attribute '_meta'

没有线索,没有参考,我不知道这是从哪里来的。我试过 Django 1.4.8 和 1.5.4,结果是一样的。

会是什么?

编辑:我添加了一个 pdb 以了解更多信息,似乎触发错误的对象来自 auth.permission。

【问题讨论】:

  • 添加更多有问题的详细信息、模型、失败的示例 json 等。
  • 触发错误的对象来自 auth.permission 但我还是不知道为什么。
  • @arulmr 感谢您提供如此深刻的见解,我可以询问有关您希望看到什么代码的更多详细信息吗?我使用填充了 db 对象的 json 文件运行 loaddata 命令。我没有写任何代码来直接执行这个动作。如果您考虑到 Django 项目的某个特定部分可能会产生影响,请告诉我,我很乐意向您展示代码。
  • 添加一些示例 json 数据和模型代码。
  • 现在失败的实际上不在我的代码中,模型是 django auth.permission 并且操作与 django-cms 包有关。如果可以的话,我会继续查看这些对象并发布它们。

标签: django


【解决方案1】:

我只是遇到了同样的问题,所以我不知道解决方案是否相同,但这是我的:

我有未处理“raw=True”情况的 post_save 信号。

看起来 post_save 和 pre_save 信号现在即使在您使用 loaddata 时也会发送,但带有“原始”参数(请参阅 https://docs.djangoproject.com/en/1.5/ref/django-admin/#loaddata-fixture-fixture)。我不知道以前是否已经这样了,但至少文档中没有。

所以我只输入了我所有的 post_save 信号:

if kwargs['raw']:
    return

一切都很好:)

【讨论】:

  • 非常感谢您发布此信息。救了我整晚都拔头发!
猜你喜欢
  • 2014-01-22
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多