我使用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),在搜索产品时只返回特定于商家的产品?
我知道如何覆盖应用程序,但是谁能给我一个概述,并向我解释覆盖搜索应用程序所需的步骤,并使基本的排序功能发挥作用?
如果我的问题不清楚,请在评论中告诉我,这样我就可以改进它。
发布于 2022-01-15 19:42:55
@yajant,我不确定我的答案对你是否有用,但我也面临着同样的问题,我很难找到解决办法。希望这能对面临同样问题的人有所帮助。谢谢
分叉搜索应用程序,导入oscar搜索并覆盖FacetedSearchView类get_results方法如下
覆盖分叉搜索/views.py中的get_results方法
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 qshttps://stackoverflow.com/questions/61382450
复制相似问题