我在1.7版中观察到了这种行为,但在使用南迁移的以前版本中没有观察到这种行为.

例如.

class RedemptionCode(models.Model):
    EXPIRE_OPTIONS = (
        ('1 week', '1 Week'),
    )

    expire_option = models.CharField(max_length=255, choices=EXPIRE_OPTIONS)

当我添加更多选项时:

EXPIRE_OPTIONS = (
    ('1 week', '1 Week'),
    ('2 weeks', '2 Weeks'),
    ('1 month', '1 Month'),
    ('1 day', '1 Day'),
)

然后运行makemigrations,它为它创建了一个迁移,来自south背景,我想它应该说没有检测到任何更改,因为它不影响数据库模式.我不知道它的作用是什么:

class Migration(migrations.Migration):

    dependencies = [
        ('credits', '0001_initial'),
    ]

    operations = [
        migrations.AlterField(
            model_name='redemptioncode',
            name='expire_option',
            field=models.CharField(max_length=255, choices=[('1 week', '1 Week'), ('2 weeks', '2 Weeks'), ('1 month', '1 Month'), ('1 day', '1 Day')]),
        ),
    ]

推荐答案

举票后因重复关闭,终于找到了答案:

这是设计好的.有几个原因,尤其是对我来说,历史上的数据迁移需要完全准确地表示模型,包括它们的所有选项,而不仅仅是那些影响数据库的选项.

参考资料:

Django相关问答推荐

Django BooleanField如何使用RadioSelect?

""关系"core_Boundary_summary的列user_id中的空值"违反了非空约束|失败行包含(2,title,string,null)

新的 Django 开发人员无法在网站上显示Hello World,而不是默认安装成功页面

如何在Django模板中有条件地传递值给with变量?

Django Rest Framework 速率限制动态基于用户类型

Django过滤器查询外键

Django:使用 Django ORM 实现 JOIN?

在 Scrapy 中访问 django 模型

如何在 Django 中向 ChoiceField 添加class?

Django - 如何从模型实例中获取管理员 URL

清理提交的表单数据中的 HTML

django 管理员操作而不 Select 对象

从表单获取模型实例而不保存

Python Django:您正在使用 staticfiles 应用程序而没有设置 STATIC_ROOT 设置

django python 日期时间设置为午夜

django 应用基于条件的样式类

在 django 中获取空查询集的类名

django-getlist()

Django:如何从模板中识别调用视图?

将 AND 和 OR 与 Q 对象组合的 Django 查询过滤器不返回预期结果