をデシリアライズで自然キーを使用しては、私のmodels.py
に私は、クラスを作成しました:ジャンゴ1.4.1とデシリアライズにDjangoのドキュメントに続き
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
私も人、「人のための治具を作成しました。 JSON」、
[
{
"pk": null,
"model": "myapp.person",
"fields": {
"name": "josh",
}
}
]
と書籍のため、 "book.json"、
[
{
"pk": null,
"model": "myapp.book",
"fields": {
"title": "my book",
"author": ["josh"]
}
}
]
は備品がSAVあります'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
を与えたときにこれがすべて正常に動作しているNB。。)
私の悪い、私はこれの複製としてもう一つをマークするつもりだった。もう1つの質問には回答があったので、これを参考にしたいと思っていました。フラグは削除されましたが、ここでは重複している可能性のある重複があります:http://stackoverflow.com/questions/12577446/django-natural-key-for-fixtures-give-deserialization-error – Gady