【发布时间】:2025-12-25 16:25:10
【问题描述】:
我有一个模型,现在有一个列 description,它填充了网站几个不同页面上的一个区域。客户希望将其拆分为几个不同的列,以便他们可以在站点的某些部分填充不同的值。所以我必须将description 列更改为frontpage_description 和resourcepage_description。我试图想出一种在 South 执行此操作的方法,以便 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 的值设置为resourcepage_description 的默认值?
我查看了orm 参数,它确实允许您在迁移期间访问模型,但我遇到的所有示例都涉及在迁移期间使用它来定义关系,而不是实际访问单个记录。
我是否只需将其拆分为模式迁移和数据迁移?
【问题讨论】:
标签: python django django-south