检索查询集中 objects 的所有相关 objects
Retrieve all related objects of objects in a queryset
昨天问了另一个 question。不幸的是,答案并没有解决问题,所以我想我缩小问题范围再问一次。
我有一个分层的类别模型(使用 django-treebeard)。当我 运行 example_category.get_descendants()
我得到的结果是 MP_NodeQuerySet 如下
<MP_NodeQuerySet [<Category: shoes>, <Category: Sneakers>, <Category: laced_sneakers>]>
在此查询集中,我想获取与每个类别相关的每个产品并显示在视图 (DetailView) 中。
我最好的选择是
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["products_in_category"] = Category.objects.prefetch_related(
Prefetch("products", queryset=self.object.get_descendants()))
return context
导致错误
“无法将关键字 'category' 解析为字段。选择包括:深度、描述、id、numchild、路径、产品、slug、标题”
我想我出于某种原因找回了类别而不是它的产品,我真的不知道如何解决它。
查看旧版 question 了解更多背景信息或直接提问!
即使有效,该查询也会 return 类别实例的查询集。
要获取属于 get_descendants
类别之一的产品,您可以这样做
from django.db.models import Subquery
categories = example_category.get_descendants()
Product.objects.filter(category__in=Subquery(categories.values("id"))
不需要使用 Subquery
,但这是一个很好的优化,可以节省您的数据库查询。
您可以阅读更多内容here
昨天问了另一个 question。不幸的是,答案并没有解决问题,所以我想我缩小问题范围再问一次。
我有一个分层的类别模型(使用 django-treebeard)。当我 运行 example_category.get_descendants()
我得到的结果是 MP_NodeQuerySet 如下
<MP_NodeQuerySet [<Category: shoes>, <Category: Sneakers>, <Category: laced_sneakers>]>
在此查询集中,我想获取与每个类别相关的每个产品并显示在视图 (DetailView) 中。
我最好的选择是
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["products_in_category"] = Category.objects.prefetch_related(
Prefetch("products", queryset=self.object.get_descendants()))
return context
导致错误
“无法将关键字 'category' 解析为字段。选择包括:深度、描述、id、numchild、路径、产品、slug、标题”
我想我出于某种原因找回了类别而不是它的产品,我真的不知道如何解决它。
查看旧版 question 了解更多背景信息或直接提问!
即使有效,该查询也会 return 类别实例的查询集。
要获取属于 get_descendants
类别之一的产品,您可以这样做
from django.db.models import Subquery
categories = example_category.get_descendants()
Product.objects.filter(category__in=Subquery(categories.values("id"))
不需要使用 Subquery
,但这是一个很好的优化,可以节省您的数据库查询。
您可以阅读更多内容here