gpt4 book ai didi

django-models - 查找后代项集

转载 作者:行者123 更新时间:2023-12-04 02:22:07 24 4
gpt4 key购买 nike

假设我有这些模型:

class Category(MP_Node):
name = models.CharField(max_length=30)

class Item(models.Model):
category = models.ForeignKey(Category)

我想找到属于任何 descendant 的所有 Item给定的类别

通常我会写 category.item_set 但这只是属于给定层次结构级别的 Item

使用 treebeard tutorial 中的示例树,如果一个项目属于“笔记本电脑内存”,我如何找到属于后代“计算机硬件”的所有项目,其中“笔记本电脑内存”是这些后代之一?

最佳答案

我只是遇到了同样的问题并想出了解决办法(在 ListView 的函数 get_queryset 中考虑它):

category = Category.objects.filter(slug=self.kwargs['category']).get()
descendants = list(category.get_descendants().all())
return self.model.objects.select_related('category').filter(category__in=descendants+[category, ])

我想出的另一个选择是使用带有“OR”的过滤器:

from django.db.models import Q

category = Category.objects.filter(slug=self.kwargs['category']).get()
descendants = list(category.get_descendants().all())
return self.model.objects.select_related('category').filter(Q(category__in=category.get_descendants()) | Q(category=category))

关于django-models - 查找后代项集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27611190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com