我的模型现在有一列description
,它填充了网站几个不同页面上的区域。客户希望将其拆分为几个不同的列,以便他们可以在站点的某些部分填充不同的值。因此,我必须将description
列更改为frontpage_description
和resourcepage_description
。我试图想出一种在南方执行此操作的方法,以便description
列的值是两个“新”列的(初始)默认值。这就是我到目前为止所做的:
# file: project/app/xxxx_mymigration.py
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
db.rename_column('myapp', 'description', 'frontpage_description')
db.add_column('myapp', 'resourcepage_description', self.gf('myfields.TextField')(default='CHANGEME'), keep_default=False)
def backwards(self, orm):
db.rename_column('myapp', 'frontpage_description', 'description')
db.delete_column('myapp', 'resourcepage_description')
models = {
# ...
我想知道的部分是self.gf(...)(default='CHANGEME')
,我想知道是否有办法将description
或frontpage_description
的值设置为{{1}的默认值}}?
我查看了resourcepage_description
参数,它允许您在迁移期间访问模型,但我遇到的所有示例都涉及使用它来定义迁移期间的关系,而不是实际访问单个记录
我是否只需要将其拆分为模式迁移和数据迁移?
答案 0 :(得分:2)
这正是一个三步骤:用于添加列的架构迁移,用于设置列的数据迁移以及用于删除原始description
列的另一个架构迁移。 90%的内容是通过./manage
命令为您完成的,因此不会有更多的工作。