Django反序列化错误安装夹具问题

时间:2019-02-10 14:27:24

标签: python json django deserialization json-deserialization

回溯(最近通话最近):   在Deserializer中的文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/serializers/json.py”,第69行     来自PythonDeserializer的收益   在Deserializer中的第91行,文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/serializers/python.py”     模型= _get_model(d [“ model”]) KeyError:“模型”

上述异常是以下异常的直接原因:

回溯(最近通话最近):   在第15行的文件“ manage.py”中     execute_from_command_line(sys.argv)   第381行的文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/init.py”,位于execute_from_command_line中     utility.execute()   在执行的文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/init.py”中执行     self.fetch_command(子命令).run_from_argv(self.argv)   在run_from_argv中的第316行中,文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/base.py”     self.execute(* args,** cmd_options)   执行中的文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/base.py”,第353行     输出= self.handle(* args,** options)   文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/commands/loaddata.py”,第72行,在句柄中     self.loaddata(fixture_labels)   第113行,位于loaddata中的文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/commands/loaddata.py”     self.load_label(fixture_label)   文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/management/commands/loaddata.py”,行168,位于load_label中     对于对象中的obj:   在Deserializer中的文件“ /Users/sparshkedia/Desktop/task/venv/lib/python3.6/site-packages/django/core/serializers/json.py”,第73行     从ex引发DeserializationError() django.core.serializers.base.DeserializationError:安装固定装置'/Users/sparshkedia/Desktop/task/movie_rs/movies.json'

时出现问题

这是上面的错误,当我尝试将json文件反序列化到数据库中时。

我的json文件如下:

[   {     “描述”:“当一个新的太空人形象取代他成为男孩房间里的头号玩具时,一个牛仔娃娃受到了极大的威胁和嫉妒。”,     “类型”:“动画,冒险,喜剧,家庭,幻想”,     “ imdb_url”:“ https://www.imdb.com/title/tt0114709/”,     “ img_url”:“ https://m.media-amazon.com/images/M/MV5BMDU2ZWJlMjktMTRhMy00ZTA5LWEzNDgtYmNmZTEwZTViZWJkXkEyXkFqcGdeQXVyNDQ2OTk4MzI@._V1_UX182_CR0,0,182,268_AL__QL50.jpg”,     “ movie_id”:114709,     “ title”:“玩具总动员”,     “ users_rating”:8.3,     “年”:1995   },   {     “描述”:“乔治·班克斯不仅要应对女儿的怀孕,而且还要应对妻子的意外怀孕。”,     “类型”:“喜剧,家庭,浪漫”,     “ imdb_url”:“ https://www.imdb.com/title/tt0113041/”,     “ img_url”:“ https://m.media-amazon.com/images/M/MV5BOTEyNzg5NjYtNDU4OS00MWYxLWJhMTItYWU4NTkyNDBmM2Y0XkEyXkFqcGdeQXVyMTQxNzMzNDI@._V1_UX182_CR0,0,182,268_AL__QL50.jpg”,     “ movie_id”:113041,     “ title”:“新娘之父第二部分”,     “ users_rating”:6     “年”:1995   }]

我需要怎么做才能将json文件输入数据库? 我还创建了适当的电影模型,其中包含根据json文件的所有字段。

我为此使用python manage.py loaddata films.json。还有其他方法吗,如果可以,请帮助我吗?

3 个答案:

答案 0 :(得分:1)

有时对象未正确关闭

  • 打开JSON文件,看看pycharmIDE突出显示的错误。
  • 如果未关闭任何对象,请手动修复。

答案 1 :(得分:0)

夹具文件必须与Django serialization format相匹配,例如:

[
    {
        "pk": "4b678b301dfd8a4e0dad910de3ae245b",
        "model": "sessions.session",
        "fields": {
            "expire_date": "2013-01-16T08:16:59.844Z",
            ...
        }
    }
]

因此,您需要通过以下方式重写灯具:

  1. 添加model
  2. 添加pk字段
  3. 将其余字段移动到fields内部对象

答案 2 :(得分:0)

我在manage.py中有打印语句。 该输出已保存在夹具json文件中,该文件生成格式错误。 删除这些打印语句即可解决。 以下是我的旧(格式错误)fixture .json文件。我删除了第一行,就可以了。

app.yaml file = dev_app.yaml
[
  {
    "model": "plans.planslevel1",
    "pk": 1,
    "fields": {
      "name": "abc",
      "description": "xyz"
    }
  
  }]