Джанго-юг: курица + яйцо с исходными данными - PullRequest
2 голосов
/ 03 декабря 2011

У меня есть модель:

class Foo(models.Model):
    pass

Я хочу добавить к нему атрибут типа. Есть фиксированное количество типов. Все существующие должны иметь тип по умолчанию. Поэтому я добавляю тип:

class Type(models.Model):
    name = models.CharField(max_length=100)

И типы исходных данных:

- model: app.Type
  pk: 1
  fields:
    name: "default"
- model: app.Type
  pk: 2
  fields:
    name: "special"

И изменить Foo:

class Foo(models.Model):
    type = models.ForeignKey(Type, default=1)

schemamigration работает нормально. Однако migrate завершается ошибкой, поскольку app.Type s еще не в базе данных, поэтому по умолчанию 1 не существует.

Как мне решить эту проблему чисто, элегантно? Я мог бы сначала вставить Type, перенести это, а затем изменить Foo и перенести это, но кажется, что это будет работать только на локальном сайте (так как при переносе на другой сайт он будет делать все в любом случае сразу).

1 Ответ

3 голосов
/ 03 декабря 2011

Вам необходимо написать дополнительную миграцию данных специально для ваших начальных данных в приборе.Проверьте документы Юга по этому вопросу http://south.aeracode.org/docs/fixtures.html#initial-data Надеюсь, что это поможет вам.

...