首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖django奥斯卡搜索应用程序只返回特定于商家的产品?

问覆盖django奥斯卡搜索应用程序只返回特定于商家的产品?
EN

Stack Overflow用户
提问于 2020-04-23 08:16:21
回答 1查看 357关注 0票数 1

我使用Django oscar(2.0.2),其中我用数据(https://prnt.sc/s1ssxx)建立了商户I与产品表https://prnt.sc/s1ssxx的外键关系,以便从数据库中获取特定于商家的产品。默认情况下,oscar返回搜索结果中的所有产品,我只想返回特定于商家网站的产品。

正如奥斯卡文档中所建议的那样,我正在使用Haystack搜索,我尝试过像所有其他应用程序一样重写搜索应用程序,我已经重写了search_indexes.py文件,但是它似乎从未从FacetedSearchView调用过。我还试图重写搜索处理程序,但它也没有被调用。

我试着理解奥斯卡的搜索功能,但在外壳上,我收到了警告,

UserWarning:模型没有注册搜索。Warnings.warn(‘模型%r未注册为搜索。’%(模型,)模型‘“没有由路由器处理。模型类oscar_apps.catalogue.models.Product没有由路由器处理。

如何注册产品模型进行搜索?

我要在哪里重写这样的查询:

Product.objects.filter(user_id=1),在搜索产品时只返回特定于商家的产品?

我知道如何覆盖应用程序,但是谁能给我一个概述,并向我解释覆盖搜索应用程序所需的步骤,并使基本的排序功能发挥作用?

如果我的问题不清楚,请在评论中告诉我,这样我就可以改进它。

EN

回答 1

Stack Overflow用户

发布于 2022-01-15 19:42:55

@yajant,我不确定我的答案对你是否有用,但我也面临着同样的问题,我很难找到解决办法。希望这能对面临同样问题的人有所帮助。谢谢

分叉搜索应用程序,导入oscar搜索并覆盖FacetedSearchView类get_results方法如下

覆盖分叉搜索/views.py中的get_results方法

代码语言:javascript
复制
def get_results(self):
    # We're only interested in products (there might be other contenttypes
    # in the Solr index).
    qs = super().get_results().models(Product)
    qs = qs.filter(user_id=1)
    return qs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61382450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档