在 Django 的视图中过滤对象 - Oscar?
Filtering Objects in a View in Django - Oscar?
尝试在 Django-Oscar 中实现对 ProductCategoryView 的简单排序查询。实施起来应该相当简单,但要花太多时间来理解。我正在重新考虑是否继续与 Oscar 合作,因为它似乎很难延期。
ProductCategoryView returns 某个类别的产品。我想根据产品模型中的某个字段对它们进行排序,比如 price
。首先,我将父泛型 class 从 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
所以我必须覆盖哪些方法。每次编辑 Oscar 都会有那么多麻烦,或者我遗漏了什么吗?
P.S:我最近问了很多关于基于 Django/Oscar Class 的观点的问题。所以我可能看起来像 Help Vampire。如果是这种情况请忽略此问题。
@Anentropic 是对的,但让我详细说明一下。
Oscar 的所有浏览视图都基于搜索引擎,因此分面可用于缩小返回产品列表的范围。默认情况下有 Solr and Elasticsearch.
的搜索引擎集成
如果您不使用 Solr 或 Elasticsearch,则默认实现是 SimpleProductSearchHandler
。它不使用任何外部服务,而是 calls Product.browsable.get_queryset()
. That code lives in oscar.apps.catalogue.managers
并且可以定制以提供自定义订购。
这一切都是假设您不想使用搜索引擎,因为更改其他搜索处理程序的结果顺序所需的自定义 类 是后端特定的。
尝试在 Django-Oscar 中实现对 ProductCategoryView 的简单排序查询。实施起来应该相当简单,但要花太多时间来理解。我正在重新考虑是否继续与 Oscar 合作,因为它似乎很难延期。
ProductCategoryView returns 某个类别的产品。我想根据产品模型中的某个字段对它们进行排序,比如 price
。首先,我将父泛型 class 从 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
所以我必须覆盖哪些方法。每次编辑 Oscar 都会有那么多麻烦,或者我遗漏了什么吗?
P.S:我最近问了很多关于基于 Django/Oscar Class 的观点的问题。所以我可能看起来像 Help Vampire。如果是这种情况请忽略此问题。
@Anentropic 是对的,但让我详细说明一下。
Oscar 的所有浏览视图都基于搜索引擎,因此分面可用于缩小返回产品列表的范围。默认情况下有 Solr and Elasticsearch.
的搜索引擎集成如果您不使用 Solr 或 Elasticsearch,则默认实现是 SimpleProductSearchHandler
。它不使用任何外部服务,而是 calls Product.browsable.get_queryset()
. That code lives in oscar.apps.catalogue.managers
并且可以定制以提供自定义订购。
这一切都是假设您不想使用搜索引擎,因为更改其他搜索处理程序的结果顺序所需的自定义 类 是后端特定的。