我有一个模型:
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,然后迁移它,但似乎这只适用于本地站点(因为当我迁移到不同的站点,它会立即完成所有操作)。
请您参考如下方法:
您需要专门为夹具中的初始数据编写额外的数据迁移。查看 South 关于该主题的文档 http://south.aeracode.org/docs/fixtures.html#initial-data希望对您有所帮助。
