2024-05-28 23:10:20 发布
网友
我使用了两个django包-django mptt(实现修改的预订单树遍历的实用程序)和django hvad(模型转换)。在
我有一个model类MenuItem,我希望它扩展translateablemodel和MPTTModel,如下所示:
class MenuItem(TranslatableModel, MPTTModel):
但它会导致元类冲突:
这个问题的解决办法是什么?我希望我可以使用双重继承。在
一般来说,@schacki的答案是有效的。然而,django-hvad在幕后覆盖了许多其他manager/queryset类,这使得目前无法与django mptt/django多态性和friends集成。在
看一下django-parler,它具有与django-hvad相似的API和管理集成,但与其他包一起使用也很不错。表布局是相同的,因此您应该能够轻松地切换包。在
您可能需要执行以下操作:
class CombinedMeta(TranslatableModel.__metaclass__, MPTTModel.__metaclass__): pass class MenuItem(TranslatableModel, MPTTModel): __metaclass__=CombinedMeta
这应该给你你想要的,没有任何错误消息。在
很抱歉迟来答复,但我认为这对有同样问题的人会有所帮助。当您子类MPTTModel和另一个类时,请确保将MPTTModel放在第一位,如下所示:
MPTTModel
class MenuItem(MPTTModel, TranslatableModel):
一般来说,@schacki的答案是有效的。然而,django-hvad在幕后覆盖了许多其他manager/queryset类,这使得目前无法与django mptt/django多态性和friends集成。在
看一下django-parler,它具有与django-hvad相似的API和管理集成,但与其他包一起使用也很不错。表布局是相同的,因此您应该能够轻松地切换包。在
您可能需要执行以下操作:
这应该给你你想要的,没有任何错误消息。在
很抱歉迟来答复,但我认为这对有同样问题的人会有所帮助。当您子类
MPTTModel
和另一个类时,请确保将MPTTModel
放在第一位,如下所示:相关问题 更多 >
编程相关推荐