在Django模型中重新组合多重继承

时间:2017-02-07 21:14:29

标签: python django inheritance multiple-inheritance django-polymorphic

在我的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,但这会否定多态性所做的一些好事。

非常感谢您提供的任何帮助。

0 个答案:

没有答案
相关问题