使用南数据迁移来改变旧记录中的值

时间:2012-11-28 08:32:21

标签: django django-south data-migration

以前我有像这样的django模型

class Review(models.Model):
    reviewdate=models.DateField(default=date.today)
    description=models.TextField()
    author=models.ForeignKey(User,null=True)

我在db中有大约500条评论记录。

我在模型中添加了一个字段

from django.core.validators import MinValueValidator,MaxValueValidator

class Review(models.Model):
    reviewdate=models.DateField(default=date.today)
    description=models.TextField()
    author=models.ForeignKey(User,null=True)
    rating= models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(10)], default=5, help_text='integers 1 to 10')

我成功运行python manage.py schemamigration myapp --auto,创建了0002_auto__add_field_review_rating.py文件

现在,我需要为db中的现有记录执行数据迁移。我必须运行

python manage.py datamigration myapp somechanges

然后在创建的somechanges.py中实现这些功能?由于我已经在新字段difficulty中定义了默认值5,因此在运行migrate命令时是否会采用?我是否必须在somechanges.py函数中明确设置它?

1 个答案:

答案 0 :(得分:2)

您不需要为此案例进行数据迁移。由于您为新字段指定了默认值,因此在应用架构迁移时将使用该默认值。

使用以下命令应用迁移:

./manage.py migrate myapp

有关新字段的默认值的详细信息,请参阅advanced changes South教程。