Skip to main content
 首页 » 编程设计

python之django-south:带有初始数据的鸡+蛋

2024年08月30日36myhome

我有一个模型:

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希望对您有所帮助。