django-south: 初始数据的鸡生蛋问题
我有一个模型:
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
还没有在数据库里,所以默认值1并不存在。
我该如何优雅地解决这个问题呢?我可以先把 Type
放进去,先迁移它,然后再修改 Foo
,再迁移一次,但这样似乎只适用于本地站点(因为在其他站点迁移时,它会一次性处理所有内容)。
1 个回答
3
你需要为你的初始数据写一个额外的数据迁移,这个数据是在固定数据中使用的。可以看看South的文档,里面有关于这个主题的详细说明,链接是 http://south.aeracode.org/docs/fixtures.html#initial-data。希望这对你有帮助。