在模板中使用 django haystack 搜索和全局搜索栏

2023-12-31

我有一个 django 项目,需要搜索 2 个不同的模型,其中一个模型有 3 种类型,我需要根据它们进行过滤。我已经安装了 haystack,并且在基本意义上工作(使用我的模型的默认 url conf 和 SearchView 以及入门文档中的模板返回的结果很好)。

问题是我只能通过使用基本 search.html 模板中的搜索表单来获取结果,并且我正在尝试使全局搜索栏与 haystack 一起使用,但我似乎无法得到正确的结果,我我对干草堆文档的运气不太好。我在这里发现了另一个问题,导致我在搜索应用程序中使用了以下方法。

我的 urls.py 将“/search”定向到我的 search.views 中的此视图:

def search_posts(request):
    post_type = str(request.GET.get('type')).lower()
    sqs = SearchQuerySet().all().filter(type=post_type)
    view = search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=sqs,
        form_class=HighlightedSearchForm
        )
    return view(request)

传入的 url 字符串类似于:

这将从我的全局搜索栏中获取查询字符串,但不返回任何结果,但是如果我从 sqs 行中删除 .filter(type=post_type) 部分,我将再次获得搜索结果(尽管未按帖子类型过滤)。有任何想法吗?我认为我错过了一些相当明显的东西,但我似乎无法弄清楚这一点。

谢谢, -肖恩

EDIT:

原来我只是个白痴。我按类型对 SQS 进行过滤未返回结果的原因是因为我的 PostIndex 类中没有包含类型字段。我将 PostIndex 更改为:

class PostIndex(indexes.SearchIndex, indexes.Indexable):
      ...
      type = indexes.CharField(model_attr='type')

并重建,现在一切正常。

不过还是谢谢你的回复!


def search_posts(request):
    post_type = str(request.GET.get('type')).lower()
    sqs = SearchQuerySet().filter(type=post_type)
    clean_query = sqs.query.clean(post_type)
    result = sqs.filter(content=clean_query)
    view = search_view_factory(
        view_class=SearchView,
        template='search/search.html',
        searchqueryset=result,
        form_class=HighlightedSearchForm
        )
    return view(request)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在模板中使用 django haystack 搜索和全局搜索栏 的相关文章

  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • Django 本身支持迁移吗

    我听说所有新的 Web 框架 如 ROR Django 等 都遵循敏捷和 TDD 的一般原则 遵循敏捷和 TDD 的一部分是在从一个迭代到另一个迭代时制定自己的设计 这意味着模型及其架构将随着应用程序的不同版本而演变 我知道 ROR 本身支
  • Django-celery/RabbitMQ 在哪里存储任务结果?

    我的 celery 数据库后端设置是 CELERY RESULT BACKEND database CELERY RESULT DBURI mysqlite db 我使用 RabbitMQ 作为我的消息发送器 似乎没有任何结果存储在数据库中
  • Django - 在管理之外使用多对多水平界面

    我正在使用带有 m2m 字段的表单 我希望这个字段看起来像 django 管理站点的水平界面 我该怎么做 谢谢 您需要使用FilteredSelectMultiple widget from django contrib admin wid
  • 在 python3.6 上 pip 安装 Django

    如果我跑pip install Django I get 已满足的要求 Django in usr local lib python2 7 dist packages 我想改用 python3 6 它已经安装在 usr bin python
  • django查询集聚合计数计数错误

    这是一个延续问题 Django查询集获取相对于其他列的不同列值 https stackoverflow com questions 52905220 django queryset get distinct column values wi
  • 查找同一模型的两个实例之间哪些字段不同

    嗯 我认为这个问题本身就很解释 我有两个 Django 模型实例 我想知道哪些字段不同 你如何以聪明的方式做到这一点 Cheers 让我们说obj1 and obj2是模型的 2 个实例MyModel 要了解 Django 模型的两个实例上
  • 使用factoryboy将字段保存为JSON

    我正在尝试创建模型的一个实例 其中一个字段是JSONField 通过创建模型实例时factoryboy 我想将该字段保存为测试数据库中的 JSONField 简单地将字段传递为JSON 它被存储在Unicode数据类型 我被困在这个问题上
  • 使用 mod_wsgi 在 Apache2 上部署 Django - Django 项目的位置正确吗?

    我正在尝试在我的网络服务器上部署我的第一个 Django 项目 我对服务器配置和 Django 都很陌生 所以我很难找到我的错误 在我在网上看到的大多数教程中 生产服务器上的 Django 项目是在 var www myproject 中创
  • 运行连接到 Django 测试数据库的 Celery Worker

    背景 我正在开发一个项目 该项目使用 Celery 来安排将在未来某个时间运行的任务 这些任务推动最终状态机的状态向前发展 这是一个例子 未来的提醒计划在 2 天内发送给用户 当该计划任务运行时 会发送一封电子邮件 并且 FSM 会前进到下
  • 使用 django 流式传输 mp3 文件,从带有

    我正在尝试制作一个小应用程序来通过 Web 界面传输我的 mp3 文件 并且我考虑过使用 django 在 python 中进行服务器端操作 我想要像 stream ID 这样的 url 来流式传输与该 ID 相对应的 mp3 我在 dja
  • 如何在 Django 上发送重置密码电子邮件?

    在使用 Django 框架创建我的第一个网站的过程中 我遇到了一个小问题 目前还没有找到解决方案 因此 当用户想要重置他或她的密码时 我想向他 她发送一封重置邮件 到目前为止 我有这个 urls py from django contrib
  • docker、nginx、django 以及如何提供静态文件

    目标 用于生产 django 网站部署的 docker 容器集 我在这个过程中遇到的问题是 通常 nginx 直接提供静态文件 根据我对使用 docker 的良好架构的理解 您将拥有一个用于 wsgi 服务器的容器 可能是gunicorn
  • django/whitenoise 存储后端导致错误

    我在调试关闭时在 heroku 上运行 django 应用程序时遇到了 500 错误 使用 rollbar 了解发生错误的原因后 它报告了以下内容 ValueError The file media img 1 jpg could not
  • 为不同用户隐藏 Django 管理站点中的某些字段

    我有一个管理网站 需要向更多管理员开放 目前我的模型看起来像 class YouTube models Model name models CharField max length 100 credit card number models
  • Django 自定义查询集过滤器

    在 Django 中 是否有一种标准方法可以为查询集编写复杂的自定义过滤器 就像我能写的一样 MyClass objects all filter field val 我想做这样的事情 MyClass objects all filter
  • Django:上传前调整图像大小

    我想调整图像大小 Pillow 在上传之前 我在下面编写了代码但不起作用 并得到错误 myapp list 处的属性错误 坚定的 请求方式 POST 请求网址 http 127 0 0 1 8000 myapp list http 127
  • 检查 Django 中是否存在用户名

    我正在开发一个 Django 项目 用户将能够以一种形式更改他们的用户名以及他们的名字和姓氏 在 forms py 中 我试图找出用户是否存在 如果是这样 它应该显示错误 问题是 如果用户想要更改他的名字和姓氏并将他的用户名保留在输入中 则
  • Django 模板变量从 {% for %} 循环到 Javascript

    这是一个迭代记录的 Django 模板 每条记录都包含一个由 JS 函数填充的 div 为了让 JS 知道要做什么 它需要从每次 for 循环迭代中获取一个变量并使用它 我不知道具体如何实现这一目标或是否可能 我不知道 也许记录在单独的 J
  • HTMX 传递所选列表中的按钮值

    我正在尝试使用 Django 使用 htmx 制作一个应用程序 我创建了一个下拉列表

随机推荐