プロジェクトをdjangoバージョン1.8.2からバージョン1.11に変換する作業があります。私が対処できない問題に直面した。このプロジェクトは、私ができる古いものですので、Django 1.8.2からDjango 1.11への継承モデル
core.CarModel.manufacture: (models.E006) The field 'manufacture' clashes with the field 'manufacture' from model 'core.page'.
どうやらこれは、モデルの継承によるものです:1.8.2で見事に働いていたテーブルのこのモデルは、バージョン1.11で動作を停止し、エラーで抜けます根本的にテーブルのスキームを変更しないで、この状況から抜け出す方法を教えてください。 ご協力いただきありがとうございます。
私は1.8.2で正常に動作し、1.11に動作を停止したモデルのスキーム、再現しています:ページのモデルは製造モデルによって継承されているのでDjangoは代理フィールド「製造を作成し、
# -*- 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')