В Django loaddata он выдает ошибки для формата json, но работает правильно для формата yaml, почему?

Чтобы научиться импортировать исходные данные в базу данных, я создал такие модели, как

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

после этого я использую фикстуры в формате .json, как указано ниже,

[
    {
        "model": "myapp.person",
        "pk": 1,
        "fields": {
            "first_name": "John",
            "last_name": "Lennon"
        }
    },
    {
        "model": "myapp.person",
        "pk": 2,
        "fields": {
            "first_name": "Paul",
            "last_name": "McCartney"
        }
    }
]

Выдает ошибку при загрузке данных

File "C:\Python27\lib\site-packages\django\core\serializers\python.py", line 96, in Deserializer

Model = _get_model(d["model"])

django.core.serializers.base.DeserializationError: Problem installing fixture 'I:\DJANGO\library\myapp\fixtures
\bookdata.json': string indices must be integers

Но когда я использую фикстуру в формате YAML, как указано ниже,

- model: myapp.person
  pk: 1
  fields:
    first_name: John
    last_name: Lennon
- model: myapp.person
  pk: 2
  fields:
    first_name: Paul
    last_name: McCartney

Работает как часы.

Теперь я сбит с толку, что было не так, поскольку целые вещи просто скопированы из их документации. Я использую Windows 32bit, Django 1.9, Python 2.7.


person arun pal    schedule 31.12.2015    source источник
comment
Убедитесь, что ваш файл .json содержит как начальный, так и конечный тег для оболочки списка объектов: [ ,]   -  person kia    schedule 02.01.2016
comment
Какую базу данных вы используете?   -  person acmisiti    schedule 04.01.2016
comment
серверная часть базы данных - sqlite. @kia Мой файл json с использованием начального и конечного тегов.   -  person arun pal    schedule 06.01.2016
comment
Пожалуйста, включите ваши команды как для JSON, так и для YAML   -  person kia    schedule 06.01.2016
comment
Можете ли вы показать код, который вы написали для его десериализации? С тем, что вы здесь написали, вроде все в порядке.   -  person JRodDynamite    schedule 16.01.2016


Ответы (1)


Я проверил ваш код в linux mint/django 1.9/python 2.7, и он отлично работает.

Я думаю, проблема может заключаться в кодировке, которую вы использовали в своих файлах. Убедитесь, что файл json использует кодировку UTF-8, и будьте осторожны, не используйте BOM. Редактор Notepad++ может определить, содержит ли файл спецификацию, и удалить ее.

person Euribates    schedule 20.01.2016
comment
Спасибо за ответ. - person arun pal; 22.01.2016