取消模型继承时,如何迁移Django中的更改?

2024-04-25 17:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有两个模型,其中一个从另一个模型继承,并使用migrate等设置数据库,如下所示:

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

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

那么我该如何迁移数据库使其不从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

然后,当我从迁移中删除delete“templateproduct\ptr\u id”时,会出现以下错误:

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

正如标题所说:取消模型继承时,如何在Django中迁移更改?你知道吗


Tags: djangoname模型id数据库modelmodelstype
1条回答
网友
1楼 · 发布于 2024-04-25 17:27:27

所以我的解决办法是删除这两个模型。然后python manage.py makemigrations merge,然后我按我想要的方式添加模型,最后再次运行python manage.py makemigrations merge来添加模型。你知道吗

这也许不是最优雅的解决方案,但确实有效。你知道吗

相关问题 更多 >