0

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'时出现问题:'model'

yaml:django.core.serializers.base.DeserializationError:安装夹具'/home/nerdbox2/django_/logbook/flights/fixtures/flight_data.yaml'时出现问题:'model'

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

是的,我是个菜鸟,但在过去的三天里,我真的一直把它打死!

任何帮助,将不胜感激!

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

4

2 回答 2

2

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

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

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

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

要解决此问题,请确保通过排除 contenttypes 和 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

于 2019-08-13T14:39:29.433 回答
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 序列化格式 102,它提供了更正式和完整的规范。

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

你最了解的自然键

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

于 2021-01-16T06:28:05.870 回答