Django 1.9 loaddata错误

时间:2016-03-25 03:57:12

标签: python django django-models loaddata

ubuntu 15.10 venv python 3.4 / django 1.9

命令:

python manage.py loaddata flight_data.json(yaml)

错误:

  

json:django.core.serializers.base.DeserializationError:问题   安装夹具   '/home/nerdbox2/django_/logbook/flights/fixtures/flight_data.json':   '模型'

     

yaml:django.core.serializers.base.DeserializationError:问题   安装夹具   '/home/nerdbox2/django_/logbook/flights/fixtures/flight_data.yaml':   '模型'

在尝试了几个csv->模型包并且没有运气之后,我决定根据Django Docs为csv-json和csv-yaml使用在线转换器,但仍然没有运气。我有~2100条记录来填充db。

是的,我是一个菜鸟,但过去3天我真的被打死了!

任何帮助将不胜感激!

模型,json和yaml在下面的评论中

2 个答案:

答案 0 :(得分:2)

有时,应用程序中的某些模型可能会导致序列化失败。一旦运行dumpdata命令,Django就会将这些模型指示为警告。确保使用以下命令排除此类模型(或某些情况下整个应用程序):

./manage.py dumpdata --exclude auth.permission > db.json

在这里,我们认为auth.permission是您需要删除的表。

如果您使用数据库转储来加载新的数据库(在另一个django项目中),则可能导致IntegrityError(如果您在同一数据库中加载数据,则可以正常工作)

要解决此问题,请确保通过排除内容类型和auth.permissions表来备份数据库:

./manage.py dumpdata --exclude auth.permission --exclude contenttypes > db.json

现在您可以对新的数据库使用loaddata命令

./manage.py loaddata db.json

来源:https://coderwall.com/p/mvsoyg/django-dumpdata-and-loaddata

答案 1 :(得分:0)

如果您已转储数据库,但不包括权限和内容类型,则您需要检查 3 个主要内容:

1# 查看您的转储 json 是否是与 django 序列化相应的正确键和值,例如:

[

      {

      "model": "myDev.person",

      "pk": 1,

      "fields": {

              "first_name": "anjan",

              "last_name": "thakuri"

      }

    },

     {

      "model": "myDev.person",

      "pk": 2,

      "fields": {

              "first_name": "Swikriti",

              "last_name": "Thakuri"

     }

    }

]

确保您有这样的格式,其中包括 3 个键:pkmodelfields(其余的都是里面)。

该页面中有一个链接指向 JSON Serialization 格式 102,它提供了更正式和完整的规范。

2# 如果您使用的是自然键,我遇到的常见异常是因为 natural key

您最了解natural key

3# 快速指南的相同迁移实例(阶段)Stackoverflow