使用属性过滤 Django-sphinx 结果?

2024-01-12

我正在经历 django-sphinx文档 http://code.google.com/p/django-sphinx/,看起来它允许您使用过滤搜索结果属性,

queryset = MyModel.search.query('query')
results1 = queryset.order_by('@weight', '@id', 'my_attribute')
results2 = queryset.filter(my_attribute=5)
results3 = queryset.filter(my_other_attribute=[5, 3,4])
results4 = queryset.exclude(my_attribute=5)[0:10]

从一些示例来看,这些属性似乎是您在 sphinx 配置文件中指定的内容,而不是表中的实际列值。配置文件允许这样的事情,

# ForeignKey's
# Apparently sql_group_column is now replaced by sql_attr_uint
sql_group_column    = country_id
sql_group_column    = state_id
sql_group_column    = listings

# DateField's and DateTimeField's
sql_date_column     = date_added

但事实证明你只能指定外键作为这个值。如图所示另一个例子 http://www.davidcramer.net/code/django/433/setting-up-django-and-sphinx-full-text-search-django-sphinx.html,

Class City(models.Model):
    ...
    # Comment: The below should probly be country_id and state_id
    country_id      = models.ForeignKey(Country)
    state_id        = models.ForeignKey(State, blank=True, null=True)
    listings        = models.PositiveIntegerField(editable=False, default=0)

当打印搜索结果时,您会得到,

print results[0]._sphinx
{'id': u'5246', 'weight': 200, 'attrs': {'state_id': 3, 'country_id': 0}}

正如您所看到的,在 attrs 中 - state_id 和 Country_id - 是 FK,显示出来。但列表却没有。

这就是我的问题。如果我想在模型中使用任意列 foo 来过滤 sphinx 搜索结果 - 我该怎么做?

Thanks!


Edit

在回答范·盖尔时,

我实际上在这里使用 sql_attr_uint 而不是 sql_group_column .. 正如我在上面的示例中提到的.. 即使 Django Sphinx 作者的示例(上面给出的链接)也不会显示 _Sphinx 字典中的属性,如果它不是FK..(请参阅上面的“如您所见”声明)。另外,我也已经有了 SQL_Query 字符串..它选择我表中的所有列..(单独,不是 *)


距离我使用 django-sphinx 做一个项目已经快一年了,所以我对此的记忆有点模糊。但是,知道我能够过滤普通列,我将发布我的 sphinx 配置的相关部分,也许这会有所帮助。

狮身人面像.conf:

sql_query_pre       =
sql_query_post      =
sql_query           = SELECT `id`, `content_type_id`, `site_id`, `user_id`, `title`, `abstract`, `summary`, `fulltext`, `approved` FROM `basedoc`
sql_query_info      = SELECT * FROM `basedoc` WHERE `id` = $id

sql_attr_uint    = content_type_id
sql_attr_uint    = site_id
sql_attr_uint    = user_id
sql_attr_uint    = approved

正如您所看到的,我有一个非 fk 列(已批准)并在 django 视图中对其进行了过滤。所以我猜你的问题是你需要sql_attr_uint代替sql_group_column,并添加sql_query字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用属性过滤 Django-sphinx 结果? 的相关文章

  • Http POST 删除 URL 中的端口

    我有一个用 Django 构建的网络应用程序 我目前正在家里的路由器后面的笔记本电脑上运行它 我将路由器配置为将发送到特定端口的所有流量路由到该笔记本电脑 我将 Nginx 作为 Apache 的反向代理 使用 mod wsgi 来运行 D
  • django测试非字段验证错误

    我有一个自定义验证函数 但我想使用 Django 提供的单元测试框架来测试它是否抛出了应该抛出的错误 我可以直接调用该函数并以这种方式测试它 但这并不能确保它在视图中正确使用 即 我想进行集成测试 django 测试非特定字段验证错误的方法
  • 使用 chrome 扩展和 Django 进行身份验证

    对于那些熟悉 django 和 chrome 扩展的人 如何使用 cookie 进行身份验证 以便当您登录 django 制作的网站时 您的 chrome 扩展程序也会登录并激活 谢谢 您的 Chrome 扩展程序 通过 Javascrip
  • Django:CSRF验证失败

    我试图将非 ssl 包装页面提交到 ssl 包装页面 但收到此错误 CSRF verification failed Request aborted Reason given for failure Referer checking fai
  • 运行 Django 测试时如何将 DEBUG 设置为 True?

    我目前正在运行一些 Django 测试 看起来DEBUG False默认情况下 有没有办法运行我可以设置的特定测试DEBUG True在命令行还是在代码中 对于测试用例内的特定测试 您可以使用 override settings 装饰器 f
  • 正在搜索 Mercurial 存储库 (TortoiseHG)?

    有什么方法可以输入特定的文件名 例如 xyz txt 并使用 TortoiseHG 在 Mercurial 存储库中搜索该文件的任何签入 如果没有 为什么不呢 这不就是版本控制的用途吗 在 Hg Repository Explorer 窗口
  • 在 Django 中处理 ajax json 对象 - 'QueryDict' 对象没有属性 'read' 错误

    我正在尝试解析 Django 视图中的 json 对象 该对象已通过 ajax 通过 post 方法从客户端传递过来 JS post update vendor merchandise types JSON stringify json o
  • Android ListView数组索引过滤后越界

    我认为这是专家的问题 我接到电话getView with positon 出界来自ListView数据列表 当我使用适配器过滤器时会发生这种情况 过滤器publishResults 方法使用小于原始列表的过滤列表填充数据 当新的过滤列表时似
  • 在我的 django 代码中获取 KeyError

    我对 Django 和 Python 都很陌生 所以如果我显得很烦人 请原谅我 我只是被误导了 错误代码 http i gyazo com 68d88cabf536b129dc37cde6c3ae319c png http i gyazo
  • “AnonymousUser”对象不可迭代

    if not request user is authenticated return None try return ClientProfile objects get user request user except ClientPro
  • solr + haystack + django 我在哪里放置 schema.xml?

    我刚刚安装Solr and Haystack for a Django我正在做的项目 下列的this http docs haystacksearch org dev tutorial html Haystack教程 我创建了一个 sche
  • pip install django_compressor 时命令 cl.exe 失败

    我发布此消息是因为我遇到了这个问题 并且已经尝试解决这个问题好几天了 但未能成功 当我尝试安装 django compressor pip install django compressor 时 我遇到以下错误 请参阅附件 我在网上搜索解决
  • 如何使用 django Rest 框架保存多对多字段对象

    我有博客 发布 标签三个模型 在博客模型中 我将字段 postedin 作为发布模型的外键 将 标签 作为标签模型的许多字段 模型 py class Posted models Model name models CharField Pos
  • django-tastypie:无法访问脱水中的bundle.request(self,bundle)

    我发现有人有同样的问题 但他的安慰对我不起作用 看Django Tastypie 如何访问 Bundle 中的 Http request 对象 https stackoverflow com questions 7389632 我正在尝试应
  • django-allauth:电子邮件确认

    我已经设置了 django allauth 并在新用户注册时使用电子邮件确认 效果很好 但在确认电子邮件中 我得到 Hello from example com You re receiving this e mail because us
  • 401 Unauthorized("detail":"未提供身份验证凭据。")

    我在后端使用 djoser 的身份验证 当我通过具有内容类型和授权标头的邮递员在 account me 发出获取请求时 我得到了正确的响应 但是当我尝试从我的角度客户端执行相同的请求时 我得到401 Unauthorized detail
  • Django 跨反向关系聚合

    鉴于这两个模型 class Profile models Model user models ForeignKey User unique True verbose name user about models TextField abou
  • Django - 找不到静态文件

    我看过有关此问题的几个帖子 但没有找到我的解决方案 我正在尝试在 Django 1 3 开发环境中提供静态文件 这是我的设置 STATIC ROOT home glide Documents django cbox static STATI
  • ImportError:在 Google 应用引擎中找不到 django.utils

    当我在 google app engine 项目中使用 django utils 中的 simplejson 时 出现此错误 Traceback most recent call last File base python27 runtim
  • django REST框架多源领域

    假设我的 models py 中有这些 models py class Theme models Model An theme is an asset of multiple levels adventure models ForeignK

随机推荐