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