在我的Django应用程序中,我有一个如下模型:
class Foo(models.Model):
...
user = models.OneToOneField(User)
...
此处user
来自django.contrib.auth.models
。我正在使用South进行迁移,我希望使用新的布尔字段扩展Foo
,其初始数据等于is_active
模型中包含的User
字段中的Foo
字段用户字段。
答案 0 :(得分:2)
首先进行架构迁移:将is_active
字段添加到Foo
类。
# edit your appnames/models.py
python manage.py schemamigration appname --auto
python manage.py migrate appname
进行数据迁移:
$ python manage.py datamigration appname copy_is_active
修改appname/migrations/0???_copy_is_active.py
,尤其是forwards
方法以执行您想要的操作。
例如,
....
from appname.models import Foo
class Migration(DataMigration):
def forwards(self, orm):
for obj in Foo.objects.all():
obj.is_active = obj.user.is_active
obj.save()
#for yn in (True, False):
# Foo.objects.filter(user__is_active=yn).update(is_active=yn)
...
执行迁移
$ python manage.py migrate appname