关于反序列化的Django文档,在我的models.py
我创建了类:
class PersonManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class Person(models.Model):
objects = PersonManager()
name = models.CharField(max_length=30, unique=True, blank=False, null=False)
def __unicode__(self):
return self.name
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Person)
def __unicode__(self):
return self.title
我还为Person创建了一个夹具,“person.json”,
[
{
"pk": null,
"model": "myapp.person",
"fields": {
"name": "josh",
}
}
]
和Book,“book.json”,
[
{
"pk": null,
"model": "myapp.book",
"fields": {
"title": "my book",
"author": ["josh"]
}
}
]
灯具保存在'灯具'文件夹中。
然后我python manage.py sql myapp
和python manage.py syncdb
,然后python manage.py loaddata persondata.json
。这有效。 (我可以在管理页面上看到输入的数据,然后我收到一个好的插入计数消息。)
然后我执行python manage.py loaddata bookdata.json
并收到以下错误消息:
DeserializationError: [u"'[u'josh']' value must be an integer."]
怎么会这样?当我宣布PersonManager
时,为什么Django坚持使用整数作为主键?我错过了什么?
(注意:当我将author
pk
直接作为整数提供时,这一切都正常。)
答案 0 :(得分:1)
您的经理方法名称错误。它应该是get_by_natural_key
而不是get_by_unique_key
。