【问题标题】:using south datamigration to change value in old records使用南数据迁移更改旧记录中的值
【发布时间】:2012-11-28 08:32:21
【问题描述】:

以前我有一个像这样的 django 模型

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

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

我为模型添加了一个字段

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 函数中明确设置它?

【问题讨论】:

  • 您不能只在本地测试您的迁移并找出答案吗?这是最好的方法(除了询问更有经验的人)来确定您是否正确地完成了它(至少在您有疑问的部分)。
  • 对不起,这是我第一次这样做..我不确定如何备份数据库..如果出现问题,可以回滚这样的迁移更改吗?跨度>

标签: django django-south data-migration


【解决方案1】:

对于这种情况,您无需进行数据迁移。由于您已为新字段指定了默认值,因此在应用架构迁移时将使用该默认值。

使用以下命令应用迁移:

./manage.py migrate myapp

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    相关资源
    最近更新 更多