Django 如何使用其他字段的初始数据在模型中创建新字段?
在我的Django应用程序中,我有如下模型:Django 如何使用其他字段的初始数据在模型中创建新字段?,django,migration,django-south,Django,Migration,Django South,在我的Django应用程序中,我有如下模型: class Foo(models.Model): ... user = models.OneToOneField(User) ... 这里的user来自django.contrib.auth.models。我正在使用South进行迁移,我想用一个新的布尔字段扩展Foo,初始数据等于Foo的用户字段中的is\u active字段。使用 首先执行架构迁移:将is_active字段添加到Foo类 # edit your appnames/mo
class Foo(models.Model):
...
user = models.OneToOneField(User)
...
这里的user
来自django.contrib.auth.models
。我正在使用South进行迁移,我想用一个新的布尔字段扩展Foo
,初始数据等于Foo
的用户字段中的is\u active
字段。使用
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???\u copy\u处于活动状态。py
,尤其是转发
方法,以执行所需操作
比如说,
....
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
尝试了
new\u bool=models.BooleanField(默认值=self.user.is\u active)
?但这也会影响将来创建的所有实例,对吗?我想避免这种情况。不知何故,我错过了文档中的数据迁移部分:)非常感谢!