В Django loaddata он выдает ошибки для формата json, но правильно работает для формата yaml. Может ли кто-нибудь сказать мне, почему?
Я новичок в django. Чтобы узнать, как импортировать исходные данные в базу данных, я создал модели как
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
Но когда я использую fixture в формате 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.
Ответы
Ответ 1
Я проверил ваш код в linux mint/django 1.9/python 2.7, и он отлично работает.
Я думаю, что проблема может заключаться в кодификации, которую вы использовали в своих файлах. Убедитесь, что файл json использует кодировку UTF-8 и будьте осторожны, не использовать спецификацию. Редактор Notepad ++ может определить, содержит ли файл спецификацию и удаляет ее.