如果我改变模型的属性,我应该在django中做syncdb吗?

时间:2014-04-16 18:46:45

标签: django django-models django-south django-syncdb

我对我的模特做了一些小改动。我安装了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?

1 个答案:

答案 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字典中进行更改。