Django /南模型场级联更新

时间:2015-07-22 20:35:35

标签: sql django postgresql django-orm django-south

我们说我在两个应用中有两个模型

"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创建另一个迁移。然后我再次运行migrateassociated_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?

0 个答案:

没有答案