【发布时间】:2012-03-11 10:53:44
【问题描述】:
按照关于反序列化的 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.json”,
[
{
"pk": null,
"model": "myapp.book",
"fields": {
"title": "my book",
"author": ["josh"]
}
}
]
灯具保存在“fixtures”文件夹中。
然后我做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 直接作为整数给出时,这一切正常。)
【问题讨论】:
-
我的错,我打算将另一个标记为与此重复。另一个问题有一个公认的答案,所以我想确保这个问题有参考。已删除标志,但这里是已回答的可能重复项:stackoverflow.com/questions/12577446/…
标签: django django-models deserialization