当我不联系模型时,如何迁移Django中的更改?

时间:2016-08-11 16:12:50

标签: python django django-models

如果我有两个模型,一个继承自另一个并使用迁移等设置数据库,如下所示:

class TemplateProduct(models.Model):
    type = models.CharField(max_length=20)

class Product(TemplateProduct):
    name = models.CharField(max_length=80)

那么我将如何迁移数据库以使Product不会从TemplateProduct继承?说我只想要这些模型:

class TemplateProduct(models.Model):
    type = models.CharField(max_length=20)

class Product(models.Model):
    name = models.CharField(max_length=80)

当我尝试迁移时,我收到以下错误:

django.db.utils.ProgrammingError: column "templateproduct_ptr_id" of relation "product_product" does not exist

然后当我删除删除" templateproduct_ptr_id"从迁移,我得到以下错误:

django.core.exceptions.FieldError: Local field u'id' in class 'Product' clashes with field of similar name from base class 'TemplateProduct'

正如标题所说:当我不继续使用模型时,如何在Django中迁移更改?

1 个答案:

答案 0 :(得分:0)

所以我的解决方案是删除这两个模型。然后python manage.py makemigrations --merge,然后我按照我想要的方式添加模型,最后再次运行python manage.py makemigrations --merge以重新添加模型。

这可能不是最优雅的解决方案,但它有效。