没有有效的Django夹具数据模型标识符?

时间:2010-12-30 05:37:29

标签: python django fixtures

我确信这里有一个简单的答案,但我看不到它。我正在尝试将灯具加载到我的数据库中,但无论我使用什么型号标识符,我都会遇到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.articletestproject.articletestproject.testapp.article并且他们都犯了同样的错误。我使用Python 2.6运行1.2.4并使用loaddata而不是syncdb。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

你的data.json文件没问题,我已经尝试过它了。

你确定你的数据库与你的模型同步吗?

你运行什么来加载文件?

如Luc建议的那样,将“manage.py dumpdata testapp”输出与您的文件进行比较

答案 1 :(得分:0)

我不确定这是否会有所帮助,但我目前正在查看我编写的一些灯具,并且所有型号标识符都已正确装入。

以下是我的用户帐户夹具的示例,但请注意它在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模块。

答案 2 :(得分:0)

我遇到了同样的错误"无效的模型标识符"几次,我总是意识到,它要么使用错误的应用程序名称,要么错误拼写应用程序名称。那就是" model":" testapp.article&#34 ;,在上述情况下,testapp拼写错误或预期不同的应用名称不是testapp。

答案 3 :(得分:0)

尝试检查settings.py,在我的情况下,我只是忘记在INSTALLED_APPS中添加应用