【发布时间】:2015-11-06 04:21:40
【问题描述】:
尝试在 Django-Oscar 中对 ProductCategoryView 实现一个简单的排序查询。实现起来应该相当简单,但是要花太多时间来理解。我正在重新考虑是否继续与奥斯卡合作,因为它似乎难以扩展。
ProductCategoryView 返回某个类别的产品。我想根据产品型号中的某些字段对它们进行排序,比如price。首先,我将父泛型类从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 Class based view 的问题。所以我可能看起来像Help Vampire。如果是这种情况,请忽略这个问题。
【问题讨论】:
-
我认为您最好通过在目录
search_handlers(例如SimpleProductSearchHandler)中自定义适当的类来进行此更改...我认为您必须对视图进行重大更改是一个迹象,表明它是错误的地方来尝试做出这种改变。我发现 Oscar 设计精良且高度可扩展,但不幸的是,文档完全缺乏为您指出很多事情的正确方向 -
谢谢,短暂的喘息。会尝试回来。
标签: python django django-oscar