python - 双重继承导致元类冲突

标签 python django database-design

我使用两个 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/

相关文章:

database-design - 如何构建和实现自助式自定义报告?

php - 我应该如何将琐碎的数据存储在数据库中?

Python 提前数天/数周/数月

python - 如何从pyspark中的MLP管道模型获得最佳超参数?

python - 我们应该使用元组还是列表作为index_together

python - 在django中使用id作为url有什么解决方案吗?

python - 验证和登录之间有什么区别?

sql-server - 如何在两行之间插入行并在数据库中赋予其优先级?

python - 如何为包含特定字符串的属性制定 XPATH 表达式?

python - 如何从 pandas 数据框中特定列的所有值中删除所有非数字字符?