Я могу только догадываться прямо сейчас, но после просмотра исходного кода Django и вашего сообщения об ошибке, я думаю, что формат вашего прибора может быть поврежден. Пример, который вы опубликовали, это все содержимое файла? Если да, то я думаю, что вам нужно поместить эту модель в список, например так (обратите внимание на внешние скобки):
[
{
"pk": 1,
"model": "seo.opportunitymetadatamodel",
"fields": {
"_content_type": [
"opportunity",
"jobopportunity"
],
"og_description": "",
"description": "",
"title": "test",
"keywords": "",
"og_title": "",
"heading": ""
}
}
]
Почему? После того, как Django успешно проанализировал данные JSON, эти данные передаются в десериализатор python. Это перебирает данные следующим образом:
82 for d in object_list:
83 # Look up the model and starting build a dict of data for it.
84 Model = _get_model(d["model"])
http://code.djangoproject.com/browser/django/trunk/django/core/serializers/python.py#L82
Теперь представьте, object_list
- это объект json (эквивалентный словарю python), итерирование по которому даст вам только ключи, в данном случае pk, model, field
. В строке 84 Django делает _get_model(d["model"])
, то есть использует строку "model"
в качестве индекса для другой строки, вероятно pk
(который является первым элементом в object_list
). Это ошибка типа.
Когда object_list
является реальным списком, итерирование по нему даст вам словари, которые можно индексировать строками.