我有一个Django模型,看起来像:
class Foobar(models.Model):
baz = models.CharField(max_length=12, default=some_func)
some_func
存在于文件/someproj/utils/utils.py
一切都很好。我为此模型创建了迁移,并按预期工作。大致上迁移过程如下:
from __future__ import unicode_literals
from django.db import migrations, models
import someproj.utils.utils
class Migration(migrations.Migration):
dependencies = [("someproj", "0008_auto_20180928_0002")]
operations = [
migrations.CreateModel(
name="Foobar",
fields=[
(
"baz",
models.CharField(
default=someproj.utils.utils.some_func,
max_length=12,
serialize=False,
),
),
],
)
]
后来我意识到我想把some_func
改名为别的东西。我在中重命名了函数实用程序.py当然,现在迁移失败了,因为某些函数不再存在。如果我手工修改迁移是可行的,但是向我解释的经验法则是你(几乎)从不手工编辑迁移。你知道吗
如何适应这种变化?你必须手工编辑迁移吗?如果我必须运行一个旧版本的代码(比如说我必须在重命名之前的某个时间点签出以前的提交),这不是有问题吗?你知道吗
如果你只有一个数据库,这应该可以。如果你有超过1个,我不确定。你知道吗
首先编写方法来处理字段的默认值:
进行空迁移:
然后可以将其导入到迁移中。你知道吗
然后像往常一样运行迁移。你知道吗
如果它似乎不起作用,让我知道。你知道吗
相关问题 更多 >
编程相关推荐