从 Django 1.8.2 到 Django 1.11 的继承模型

智商

我的任务是将项目从 django 1.8.2 版转换为 1.11 版。遇到了我无法应付的问题。该表模型在 1.8.2 中运行良好,但在 1.11 版本中停止工作,并出现错误:

core.CarModel.manufacture: (models.E006) The field 'manufacture' clashes with the field 'manufacture' from model 'core.page'.

显然这是由于模型的继承造成的,由于项目是旧的我无法从根本上改变表格的方案,请告诉我如何摆脱这种情况。预先感谢您的帮助。

我已经复制了模型方案,它在 1.8.2 上运行良好,在 1.11 上停止工作:

# -*- coding:utf-8 -*-
from django.db import models
from django.contrib.contenttypes.models import ContentType


class InheritanceCastModel(models.Model):

    real_type = models.ForeignKey(ContentType, editable=False)

    def save(self, *args, **kwargs):
        if not self.id:
            self.real_type = self._get_real_type()
        super(InheritanceCastModel, self).save(*args, **kwargs)

    def _get_real_type(self):
        return ContentType.objects.get_for_model(type(self))

    def cast(self):
        return self.real_type.get_object_for_this_type(pk=self.pk)

    class Meta:
        abstract = True


class Page(InheritanceCastModel):
    title = models.CharField(max_length=512, verbose_name=u'Title', blank=True)


class Manufacture(Page):
    ru_title = models.CharField(max_length=128, verbose_name=u'RU Title')


class CarModel(Page):
     # here problem:         
    manufacture = models.ForeignKey(Manufacture, verbose_name=u'Manufacture')
    ru_title = models.CharField(max_length=64, verbose_name=u'RU Title')
智商

因为Page模型是由Manufacture模型继承的,django为Page对象创建了一个代理字段“manufacture”,但是这个名字用在CarModel模型中,导致冲突。在 django 1.8 版本中,该字段被称为“manufacture_ptr”,因此没有冲突。在 django 1.9、1.10、1.11 版本中,该字段被称为“制造”。

解决方法是将 CarModel 模型中的字段名称从“制造”更改为另一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

的Django 2模型1

来自分类Dev

Django 1 到 Django 2 on_delete 错误

来自分类Dev

Django模型继承

来自分类Dev

1 个视图中的 2 个模型和 Django 中的 1 个模板?

来自分类Dev

Django模型设计-1个或多个表

来自分类Dev

Django 模型到字段

来自分类Dev

django抽象模型继承导入

来自分类Dev

Django模型继承,覆盖字段

来自分类Dev

Django模型中的“部分继承”

来自分类Dev

从django.forms继承模型

来自分类Dev

Django用户模型继承无效

来自分类Dev

django用户继承的模型失败

来自分类Dev

迁移自Django继承的模型

来自分类Dev

Django从多个模型类继承

来自分类Dev

Django ORM bulk_create 1:1 相关模型

来自分类Dev

带内联的Django管理员,带有2个外键的1个模型指向2个不同模型

来自分类Dev

Django教程1错误

来自分类Dev

猜数字从1到8

来自分类Dev

Django'Sites'模型-什么是SITE_ID = 1',为什么?

来自分类Dev

Django-每个模型1个数据库?

来自分类Dev

Django-模型元数据是否继承?

来自分类Dev

Django中与模型继承的多对多关系

来自分类Dev

Django模型继承创建或从父级获取

来自分类Dev

带有模型继承的Django多对多

来自分类Dev

覆盖继承的Django模型中的字段参数

来自分类Dev

如何查询集继承模型Django?

来自分类Dev

如何从Django模型继承和过滤数据

来自分类Dev

Django Rest框架和模型继承

来自分类Dev

Django模型:通用祖先继承与迁移