Django 1.4.1和在反序列化中使用自然键

Django 1.4.1和在反序列化中使用自然键,django,django-models,deserialization,Django,Django Models,Deserialization,在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_lengt

在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创建了一个fixture,“Person.json”

对于Book,“Book.json”

装置保存在“装置”文件夹中

然后我执行
python manage.py sql myapp
python manage.py syncdb
,然后执行
python manage.py loaddata persondata.json
。这很有效。(我可以在管理页面上看到输入的数据,并收到一条很好的插入计数消息。)

然后我执行
python manage.py loaddata bookdata.json,得到以下错误消息:

反序列化错误:[u''[u'josh']'值必须是整数。“]

这怎么可能?为什么Django在我声明了
PersonManager
时坚持我使用整数作为主键?我错过了什么


(注意,当我直接将
作者
主键
作为整数时,这一切都可以正常工作。)

您的管理器方法的名称错误。它应该是
get_by__natural_key
而不是
get_by_unique_key

我的错,我想把另一个标记为这个的副本。另一个问题有一个公认的答案,所以我想确保这个问题提到了那个。已删除标志,但以下是可能的重复:
[
    { 
        "pk": null,
        "model": "myapp.person", 
        "fields": {
            "name": "josh",
        }
     }
]
[
    { 
        "pk": null,
        "model": "myapp.book", 
        "fields": {
            "title": "my book",
            "author": ["josh"]
        }
     }
]