【问题标题】:Data not modified during South datamigration南数据迁移期间未修改数据
【发布时间】:2014-04-10 11:51:25
【问题描述】:

我正在执行向我的自定义用户模型添加推荐代码的迁移。我添加的字段如下所示:

refer_code = models.CharField(max_length=10, default=UUID_10)

在我的数据迁移中,我添加了以下内容:

for u in orm['app.User'].objects.all():
    u.refer_code = UUID_10()
    print u.name + ': ' + u.refer_code
    u.save()

但是,当我执行迁移时,我的所有用户都有相同的代码。 print 命令会为每个用户提供不同的代码,所以这不是我的功能的问题。

奇怪的是,如果我回滚数据迁移(它没有 backwards 方法)以及之前添加字段的迁移,然后重新应用它们,不仅每个模型都有相同的数据,而且完全与以前的数据相同。

数据迁移的其他部分(使用 get_or_create 将对象添加到数据库)运行良好。

到底发生了什么?

【问题讨论】:

    标签: django django-south


    【解决方案1】:

    我认为您的函数被调用而不是新字段被创建。所以尝试做两次迁移。首先添加具有默认值的新字段。然后填写该字段。

    【讨论】:

    • 这就是我正在做的。
    • 哪些部分?我已经在此处包含了相关代码,其他所有内容都是由 South 自动生成的,所以我没有费心包含它。
    • 所以在给它赋值之前尝试检查用户实例是否有属性'refer_code'。
    • 我已经检查过了,确实如此。
    • 模型保存方法可能有些奇怪?
    猜你喜欢
    • 2014-07-30
    • 2020-08-19
    • 2016-01-11
    • 2015-10-11
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2019-11-18
    • 2014-05-29
    相关资源
    最近更新 更多