一直在使用 Django Polymorphic 来帮助我处理 Django 模型中的复杂继承模式。
我遇到了一个问题,我需要有一个具体的基础模型(因为它本身需要一个 ForeignKey),然后有多个模型从它继承,最终一些模型从其中的多个继承。问题是我收到 E005 错误:
app.NamedWeightedModel:(models.E005)父模型“app.namedmodel”中的字段“basemodel_ptr”与父模型“app.massmodel”中的字段“basemodel_ptr”发生冲突。
触发此操作的简单示例如下所示:
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 规范的实现),我希望能够使用多重继承(理想情况下通过多态)使事情变得更容易。
我考虑过让任何多重继承模型成为单继承,所有其他继承模型都映射为 OneToOneFields,但这否定了多态的一些好处。
您能提供的任何帮助将不胜感激。