我们说我在两个应用中有两个模型:
"Products" app
ProductCode(models.Model):
code = models.CharField(max_length=10, primary_key=True)
associated_code = models.OneToOneField('self', blank=True, null=True)
"Accounts" app
InventoryItem(models.Model):
productCode = models.ForeignKey(ProductCode)
现在我需要将ProductCode.code的'max_length'更新为20 ,所以我创建了一个南迁移(Django 1.5,Postgres),如下所示:
manage.py schemamigration --auto products
...它为我创建的迁移内容如下:
def forwards(self, orm):
db.alter_column(u'products_productcode', 'code', self.gf('django.db.models.fields.CharField')(max_length=20, primary_key=True))
然后我运行迁移
编辑:然后我再次运行schemamigration
,并为associated_code
创建另一个迁移。然后我再次运行migrate
,associated_code
现在在我的数据库中character varying(20)
。
但是当我查看我的数据库时,我看到了:
accounts_inventoryitem:
product_code_id | character varying(10) | not null
products_productcode:
code | character varying(20) | not null
associated_code | character varying(20) |
看起来南方没有在各种关系中级联我的字段更新。
当我尝试加载数据时,这会导致错误:
Could not load products.ProductCode(pk=abcdefghijklmno): value too long for type character varying(10)
这是由ProductCode
的圆形模型关系引起的吗?
或者也许是因为我的模型在应用程序之间存在FK关系?(它在另一个应用程序中也有M2M关系,如上图所示)
或者可能是因为code
是我模特的PK?