我对我的模特做了一些小改动。我安装了south
并且之前已完成初始迁移。
从:
class Text(models.Model):
title = models.CharField(max_length=20, verbose_name="posting title")
要:
class Text(models.Model):
title = models.CharField(max_length=200, verbose_name="posting title")
我将max_length从20更改为200.当我运行
时./manage.py schemamigration my_app --auto
Nothing seems to have changed.
是否意味着对属性的任何更改(例如verbose_name,label,required等) 不需要syncdb?
答案 0 :(得分:0)
有一些属性需要数据库同步,因为它们在数据库模式中部分或全部强制执行。这是一个(可能不完整)列表:
至于为什么南方没有接受任何改变......这是一个奇怪的事情。
首先,运行./manage.py migrate my_app --list
并确保初始迁移旁边有*
。如果没有,请运行./manage.py migrate my_app --fake
并重试schemamigration命令。
如果旁边有星号,则必须检查迁移文件。
如果您打开初始迁移文件(可能称为0001_initial.py
),您可以看到南方如何记录您的模型。在您的情况下,您应该看到如下行:
...
('title', self.gf('django.db.models.fields.CharField')(max_length=20)),
...
如果不是这种情况,您可以编辑该文件以反映您的旧模型,其标题限制为20个字符。请注意,如果文件中存在错误,您必须在forwards
函数和models
字典中进行更改。