con*_*d00 3 sql migration django relational django-south
我想在现有表中添加一个新列,但我想根据已有的数据给它一个默认值:
例如,每条记录都有一个start_date
.现在我想添加一个open_until
列,我想用start_date
每个现有记录的值填充它.(即将到来的记录将能够选择不同的价值)
有友好的方式来做到这一点吗?
小智 12
你也可以在南方做.唯一需要注意的是,您需要两个步骤:
一个架构迁移,增加了open_until列
from django.db import models
import datetime
class MyModel(models.Model):
start_date = models.DateField(),
open_until = models.DateField(default=datetime.date.today),
Run Code Online (Sandbox Code Playgroud)
$ python manage.py schemamigration --auto appname
使用该其他列的值填充现有行的数据迁移
$ python manage.py datamigration appname populate_open_until
import datetime
class Migration(DataMigration):
def forwards(self, orm):
"Set open_until value to that of start_date for existing rows"
for t in orm.MyModel.objects.all():
t.open_until = t.start_date
t.save()
def backwards(self, orm):
"Revert back to default"
for t in orm.MyModel.objects.all():
t.open_until = datetime.date.today
t.save()
Run Code Online (Sandbox Code Playgroud)(可选)在步骤1中,您可以提供临时默认值或将其设为可选,并添加第3步
归档时间: |
|
查看次数: |
2670 次 |
最近记录: |