2015-12-31 2 views
11

Я новичок Джанго, Для того, чтобы узнать, как импортировать исходные данные в базе данных я создал модели, как,В 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" 
     } 
    } 
] 

Он бросает ошибку на LoadData

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.

+0

Пожалуйста, убедитесь, что ваш файл '.json' содержит как начальный, так и конечный тег для оболочки объекта:' [','] ' – kia

+0

Какую базу данных вы используете? – acmisiti

+0

База данных - это sqlite. @kia Мой json-файл с использованием как стартового, так и конечного тегов. –

ответ

1

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

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

+0

Спасибо за ваш ответ. –