我使用两个 django 包 - django-mptt(用于实现修改后的预序树遍历的实用程序)和 django-hvad(模型翻译)。
我有一个模型类 MenuItem,我希望它扩展 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)
这个问题的解决方案是什么?我希望我可以使用双重继承。
最佳答案
您可能想要执行以下操作:
class CombinedMeta(TranslatableModel.__metaclass__, MPTTModel.__metaclass__):
pass
class MenuItem(TranslatableModel, MPTTModel):
__metaclass__=CombinedMeta
这应该可以准确地满足您的需求,不会出现任何错误消息。
关于python - 双重继承导致元类冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254553/