gpt4 book ai didi

python - 在 Django 中过滤 View 中的对象 - Oscar?

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:08 24 4
gpt4 key购买 nike

尝试在 ProductCategoryView 上实现简单的排序查询在《 Django 奥斯卡》中。实现起来应该相当简单,但要花太多时间来理解。我正在重新考虑是否继续与奥斯卡合作,因为似乎很难延长。

ProductCategoryView返回特定类别的产品。我想根据产品模型中的特定字段(例如价格)对它们进行排序。首先,我将父泛型类从 TemplateView 更改为 ListView,以便我可以使用 get_queryset 方法。然后我重写 get_queryset 方法,如下所示,并在其中编写一个简单的查询集。尽管流程确实进入了 get_queryset 方法,但排序仍然没有发生。

def get_queryset(self):
queryset = Product.objects.filter(categories = self.category)
logger.debug("inside")
queryset = queryset.order_by("price")
return queryset

那么我必须覆盖哪些方法。每次编辑奥斯卡都会遇到这么多麻烦还是我漏掉了一些东西?

P.S: 我最近问了很多关于 Django/Oscar 基于类的 View 的问题。所以我可能看起来像 Help Vampire 。如果是这种情况,请忽略此问题。

最佳答案

@Anentropic 是对的,但让我详细说明一下。

Oscar 的所有浏览 View 均基于搜索引擎,因此可以使用分面来缩小返回产品列表的范围。默认情况下,有 Solr 的搜索引擎集成和Elasticsearch .

如果您不使用 Solr 或 Elasticsearch,默认实现是 SimpleProductSearchHandler。它不使用任何外部服务,而是 calls Product.browsable.get_queryset() 。该代码位于 oscar.apps.catalogue.managers并且可以进行定制以提供定制订购。

这一切都假设您不想使用搜索引擎,因为更改其他搜索处理程序类的结果顺序所需的自定义是特定于后端的。

关于python - 在 Django 中过滤 View 中的对象 - Oscar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31984175/

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