1

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 ですべてを実行していることです。エラーが発生したフィクスチャの場所を特定する方法はありますか?

4

0 に答える 0