Person.json と Movies.json という 2 つのフィクスチャ セットがあります。Person フィクスチャの基本的な形式は次のとおりです。
{
"pk": 1,
"model": "data.Person",
"fields": {
"full": "Anna-Varney",
"num": "I",
"short": "Anna-Varney"
}
},
そして、最初にロードしますが、問題ありません。私の movie.json は次のようになります。
{
"pk": 1,
"model": "data.Film",
"fields": {
"date": "2005-08-01",
"rating": 8.3,
"actors": [
[
"Anna-Varney"
]
],
"name": "Like a Corpse Standing in Desperation (2005) (V)"
}
},
そして、映画のフィクスチャをロードすると、次のエラーが発生します。
DeserializationError: Problem installing fixture 'data/fixtures/movies.json': Person matching query does not exist.
私のモデルは次のとおりです。
class PersonManager(models.Manager):
def get_by_natural_key(self, full):
return self.get(full=full)
class Person(models.Model):
objects = PersonManager()
full = models.CharField(max_length=100,unique = True)
short = models.CharField(max_length=100)
num = models.CharField(max_length=5)
def natural_key(self):
return (self.full,)
def __unicode__(self):
return self.full
class Film(models.Model):
name = models.TextField()
date = models.DateField()
rating = models.DecimalField(max_digits=3 , decimal_places=1)
actors = models.ManyToManyField('Person')
def __unicode__(self):
return self.name
過去に同様のモデルとフィクスチャを読み込んで動作しましたが、コードを少しリファクタリングしようとしているため、動作しません。私が行った注目すべき変更の 1 つは、MySQL ではなく PostgreSQL になり、virtualenv ですべてを実行していることです。エラーが発生したフィクスチャの場所を特定する方法はありますか?