首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-mptt的MPTTModel继承问题

django-mptt的MPTTModel继承问题
EN

Stack Overflow用户
提问于 2018-11-27 11:06:58
回答 1查看 310关注 0票数 0

遇到意外行为与模型继承。

我在django shell中启动了以下代码:

代码语言:javascript
复制
import mptt
from django.db import models


class MyTreeQuerySet(mptt.querysets.TreeQuerySet):
    pass

class MyTreeManager(
    models.Manager.from_queryset(MyTreeQuerySet)
):
    pass

class TreeModel(mptt.models.MPTTModel):
    class Meta:
        app_label = 'myapp'
    objects = MyTreeManager()

print(type(TreeModel.objects.all()))

得到了这个:mptt.querysets.TreeQuerySet。但是等着MyTreeQuerySet

用Django==1.11和django-mptt检查=0.9.1

如何使用自定义查询集创建MPTTModel的祖先?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 08:58:35

为自己找到了解决方案:我们应该使用mptt.managers.TreeManager.from_queryset而不是dj_models.Manager.from_queryset。我认为这是因为MPTTModel.__new__有一些神奇之处,因为它的经理列表正在修补。我没有钻研。

代码语言:javascript
复制
import mptt
from django.db import models


class MyTreeQuerySet(mptt.querysets.TreeQuerySet):
    pass

class MyTreeManager(
    mptt.managers.TreeManager.from_queryset(MyTreeQuerySet)
):
    pass

class TreeModel(mptt.models.MPTTModel):
    class Meta:
        app_label = 'myapp'
    objects = MyTreeManager()

print(type(TreeModel.objects.all()))

# output:
# <class '__main__.MyTreeQuerySet'>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53498308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档