Python 在Django-Oscar中过滤视图中的对象?
尝试在Django Oscar中对实现一个简单的排序查询。实现起来应该相当简单,但理解起来要花太多时间。我正在重新考虑是否继续与奥斯卡合作,因为这似乎很难扩展 返回某一类别的产品。我想根据产品模型中的某个字段对它们进行排序,比如说Python 在Django-Oscar中过滤视图中的对象?,python,django,django-oscar,Python,Django,Django Oscar,尝试在Django Oscar中对实现一个简单的排序查询。实现起来应该相当简单,但理解起来要花太多时间。我正在重新考虑是否继续与奥斯卡合作,因为这似乎很难扩展 返回某一类别的产品。我想根据产品模型中的某个字段对它们进行排序,比如说价格。首先,我将父泛型类从TemplateView更改为ListView,以便使用get\u queryset方法。然后我重写下面的get\u queryset方法,并在其中编写一个简单的queryset。尽管流确实进入了get\u queryset方法,但排序仍然没有
价格。首先,我将父泛型类从TemplateView
更改为ListView
,以便使用get\u queryset
方法。然后我重写下面的get\u queryset
方法,并在其中编写一个简单的queryset。尽管流确实进入了get\u queryset
方法,但排序仍然没有发生。
def get_queryset(self):
queryset = Product.objects.filter(categories = self.category)
logger.debug("inside")
queryset = queryset.order_by("price")
return queryset
那么我必须覆盖哪些方法。每次编辑奥斯卡都会有这么多麻烦,还是我错过了什么
附言:最近我问了很多关于Django/Oscar基于类的观点的问题。所以我可能看起来像个傻瓜。如果是这样的话,请忽略这个问题。@Anentropic是正确的,但让我详细说明一下
Oscar的所有浏览视图都基于搜索引擎,因此可以使用刻面来缩小返回产品的范围。默认情况下,和有搜索引擎集成
如果不使用Solr或Elasticsearch,默认实现是SimpleProductSearchHandler
。它不使用任何外部服务,而是使用。该代码存在于中,可以进行定制以提供定制订购
这都是假设您不想使用搜索引擎,因为更改其他搜索处理程序类的结果顺序所需的自定义是后端特定的。我认为您最好通过在Catalogsearch\u handler
中自定义适当的类来进行此更改(例如SimpleProductSearchHandler
)…我认为,你必须对观点做出重大改变,这表明你在错误的地方尝试做出这种改变。我发现Oscar设计得很好,可扩展性很强,但不幸的是,这些文档完全没有为您指明很多事情的正确方向。谢谢,暂时休息一下。我会试着回去的。谢谢你的精心安排。我在SimpleProductSearchHandler
中添加了我的order\u by
子句,它成功了。我想一旦我掌握了奥斯卡的窍门,事情就会变得容易起来。你能给我指一些比官方文档更能解释奥斯卡细节的博客或文档吗?不幸的是,我唯一的知识来自第一手经验。