我使用了兩個django包 - django-mptt(用於實現Modified Preorder Tree Traversal的實用程序)和django-hvad(模型翻譯)。雙重繼承導致元類衝突
我有一個模型類菜單項,我想它延伸TranslatableModel和MPTTModel,像這樣:
class MenuItem(TranslatableModel, MPTTModel):
但它會導致元類衝突:
(TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class
must be a (non-strict) subclass of the metaclasses of all its bases)
如何解決這問題?我希望我可以使用雙重繼承。
爲什麼你需要多重繼承?如果可以的話,通常最好避免它。 – jathanism
因爲MenuItem有翻譯(需要擴展TranslatableModel)並且必須有樹層次結構(需要擴展MPTTModel)。 –
相關:http://stackoverflow.com/a/7314847/194311 – jathanism