Нет действительного идентификатора модели для данных прибора Django? - PullRequest
4 голосов
/ 30 декабря 2010

Я уверен, что здесь есть простой ответ, но я его не вижу.Я пытаюсь загрузить приборы в свою базу данных, но независимо от того, какой идентификатор модели я использую, я получаю ошибку DeserializationError: invalid model identifier:....

Структура файла:

testproject/
    testapp/
        fixtures/
            data.json
        __init__.py
        models.py
        tests.py
        views.py
    sqlite3.db
    __init__.py
    manage.py
    settings.py
    urls.py

Поскольку это мой первыйперейти на светильники, я использую модель из http://www.djangoproject.com/documentation/models/fixtures/:

from django.db import models
from django.conf import settings

class Article(models.Model):
    headline = models.CharField(max_length=100, default='Default headline')
    pub_date = models.DateTimeField()

    def __unicode__(self):
        return self.headline

    class Meta:
        ordering = ('-pub_date', 'headline')

data.json:

[
    {
        "pk": "3",
        "model": "testapp.article",
        "fields":
        {
            "headline": "Time to reform copyright",
            "pub_date": "2006-06-16 13:00:00"   
        }
    }, 
    {    
        "pk": "2",
        "model": "testapp.article",
        "fields":
        {
            "headline": "Poker has no place on ESPN",
            "pub_date": "2006-06-16 12:00:00"
        }
    }, 
    {    
        "pk": "1", 
        "model": "testapp.article",
        "fields":
        {
            "headline": "Python program becomes self aware",
            "pub_date": "2006-06-16 11:00:00"
        }
    }
]

Я пробовал testapp.article, testproject.article, testproject.testapp.article и все они выдают одну и ту же ошибку.Я использую 1.2.4 с Python 2.6 и использую loaddata вместо syncdb.Есть идеи?

Ответы [ 4 ]

2 голосов
/ 30 декабря 2010

Ваш файл data.json в порядке, я пробовал, и он работает.

Вы уверены, что ваша БД синхронизирована с вашими моделями?

что вы запускаете для загрузки файла?

как предложил Люк, сравните вывод "manage.py dumpdata testapp" с вашим файлом

0 голосов
/ 21 декабря 2014

Попробуйте проверить settings.py, в моем случае я просто забываю добавить приложение в INSTALLED_APPS

0 голосов
/ 15 июня 2014

У меня была одна и та же ошибка "Неверный идентификатор модели" несколько раз, и я всегда осознавал, что она либо использует неправильное имя приложения, либо имя приложения написано неправильно. То есть «модель»: «testapp.article», testapp либо неправильно написан, либо ожидает другое имя приложения, отличное от testapp, как в приведенном выше случае.

0 голосов
/ 30 декабря 2010

Я не уверен, что это вообще поможет, но в настоящее время я смотрю на некоторые приборы, которые я написал, и все мои идентификаторы модели правильно записаны.

Вот пример из моих учетных записейFixture, но обратите внимание, что он находится в YAML.

- model: auth.User
  pk: 4
  fields:
    username: avirtue
    first_name: Aurora
    last_name: Virtue
    is_active: true
    is_superuser: false
    is_staff: false
    password: sha1$90431$9347d343e94122f94f9f02988f026a76d339ab02
    email: avirtue@someschool.edu

- model: users.UserProfile
  pk: 4
  fields:
    user: 4
    school_id: 420985
    professor: false

Это находится в файле в папке users / fixtures / (то есть, есть пользователи приложения, и этот файл находится в папке fixtures этого приложения).

Как видите, модели на самом деле приходят из двух разных мест.Второй, который я использую, взят из того же приложения и определяет UserProfile.Первый на самом деле из модуля django.contrib.auth, который проект использует для аутентификации.

...