【问题标题】:AttributeError: 'TreeQuerySet' object has no attribute 'get_family'AttributeError:“TreeQuerySet”对象没有属性“get_family”
【发布时间】:2025-12-08 10:50:01
【问题描述】:

我正在使用 django mptt,我想得到一个孩子的全家人。 当我调用其他函数时它工作正常

例如我过滤对象并调用函数get_family

p = Platform.objects.filter(name__startswith='signals')
s = p.get_family()
print(s)

但出现错误

AttributeError: 'TreeQuerySet' 对象没有属性 'get_family'

【问题讨论】:

    标签: python django django-mptt


    【解决方案1】:

    get_family 是模型上的一个方法。但正如错误所示,filter 返回一个 QuerySet - 即模型的集合。您需要选择一个来调用您的方法。

    要么使用.first() 方法:

    p = Platform.objects.filter(name__startswith='signals').first()
    

    或者,如果您确定只有一个平台对象匹配,请使用get 而不是过滤器:

    p = Platform.objects.get(name__startswith='signals')
    

    【讨论】:

      【解决方案2】:

      您的错误表明您尝试访问 get_family 的内容有误,或者您没有正确实现该库。 看一眼http://django-mptt.readthedocs.io/en/latest/models.html?highlight=get_family#get-family,您可以看到您需要扩展MPTTModel 才能使用该功能

      【讨论】:

      • 您创建/运行迁移了吗?由于我不熟悉该库,因此无法提供太多帮助,但 isinstance(Platform.objects.first(), MPTTModel) 应该是 True
      最近更新 更多