在我的Django模型中使用Django Polymorphic来帮助我处理复杂的继承模式。
我遇到了一个问题,我需要有一个具体的基础模型(因为它需要一个ForeignKey自己),然后有多个模型继承它,最终一些模型继承自其中的多个。问题是我收到了E005错误:
app.NamedWeightedModel :( models.E005)字段'basemodel_ptr'来自 父模型'app.namedmodel'与字段'basemodel_ptr'冲突 来自父模型'app.massmodel'。
触发此操作的简单示例如下所示:
from django.db import models
from polymorphic.models import PolymorphicModel
class BaseModel(PolymorphicModel):
parent = models.ForeignKey('self')
class NamedModel(BaseModel):
name = models.CharField(max_length=32)
class MassModel(BaseModel):
weight = models.FloatField()
class NamedWeightedModel(NamedModel, MassModel):
pass
有没有更好的方法来解决这个问题?还是一种标准方法?
我的真实模型要复杂得多(UML规范的实现),我希望能够使用多重继承(理想情况下通过Polymorphic)来使事情变得更容易。
我已经考虑过将任何多继承模型作为单一继承,并将所有其他继承模型映射为OneToOneFields,但这会否定多态性所做的一些好事。
非常感谢您提供的任何帮助。