首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django中的Algolia模型集成-处理各种字段类型的可能方法

Django中的Algolia模型集成-处理各种字段类型的可能方法
EN

Stack Overflow用户
提问于 2017-06-20 21:33:48
回答 1查看 176关注 0票数 1

我有一个模型与各种不同的字段类型,我希望Algolia搜索引擎索引正确。到目前为止,我已经能够非常直接地处理models.char_fields了-我现在在想,什么是索引各种其他字段类型(例如,ForeignKey“对象”、ImageFieldsDateTime字段等)的最好方法。

我注意到的一件事是,Algolia会以Unix标准time...so的形式获取并存储一个DateTimeField,最初我以为我可以使用{% humanize %}在模板上呈现一些人类可读的东西,但没有成功。

我想知道是否有人知道从模型中拖出有用信息的方法-我的一个想法是在视图中获取对象,然后为每个返回的对象提供唯一的标识,然后执行一些条件流将该唯一标识与模型相结合,这样我就可以正常地使用该模型了……?例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def instant_search(request):
    posts = Post.published.all()

    context = {
        'appID': settings.ALGOLIA['APPLICATION_ID'],
        'searchKey': settings.ALGOLIA['SEARCH_API_KEY'],
        'indexName': get_adapter(Post).index_name,
        'posts': posts,
    }

    return render(request, 'blog/frame/instant_search.html', context)

在模板中,我可以使用{% for posts in post %} {% if post.id = _highlightResult.id.value %} ...do some stuff {% endif %} {% endfor %}

如果这还不够快(我几乎保证不会),我想知道Algolia是否可以处理关键信息,例如拖出在模型中定义为ImageField的图像的url,例如,就像我在模板中使用post.image.url或从模型中的DateTime字段models.DateTimeField(default=timezone.now)中获取人类可读的值一样。当Algolia索引定义的模型字段时,这样做真的很好……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 22:01:57

刚刚弄明白了这一点:

models.py中,我必须定义属性方法来获得一个经过处理的定制值,以便Algolia能够理解:

例如,我在要索引的模型的类中定义了以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def image_url(self):
    """Get upload_to path specific to this photo: Algolia recognizable format."""
    return self.image_scroll_1.url

def published_date(self):
    """Returns a humanized date format for Algolia indexing."""
    humanized_published_date = str(self.publish.strftime("%A, %d, %B %Y %I:%M%p"))
    return humanized_published_date

希望这能帮助其他正在使用Algolia并编写各种教程的人(我以Django为例)。

然后可以在index.py中引用它们,如下所示:

从algoliasearch_django导入AlgoliaIndex

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class PostIndex(AlgoliaIndex):
    fields = ('title', 'post_author', 'lead_in', 'published_date', 'keyword_tags', 'image_url', 'get_absolute_url')

以及您可能喜欢的任何其他可选参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44663401

复制
相关文章
Angular 项目多国语言设置
有时候,我们开发了一个项目,需要走国际化。那么我们需要设置多国语言。下面,我们以 Angular 项目为例,说说怎么针对 Angular 项目来设置多国语言。React 和 Vue 项目同理~
Jimmy_is_jimmy
2023/03/14
2K0
Angular 项目多国语言设置
如何使用Angular CLI和PM2运行Angular应用程序
Angular CLI是Angular框架的命令行界面,用于在开发过程中在本地创建,构建和运行应用程序。
子润先生
2021/06/16
2.9K0
如何使用Angular CLI和PM2运行Angular应用程序
Angular CLI是Angular框架的命令行界面,用于在开发过程中在本地创建,构建和运行应用程序。
知忆
2021/06/24
2.2K0
selenium设置Chrome
关闭图片 from selenium import webdriver options = webdriver.ChromeOptions() prefs = { 'profile.default_content_setting_values': { 'images': 2 } } options.add_experimental_option('prefs', prefs) browser = webdriver.Chrome(chrome_options=options
机器学习和大数据挖掘
2019/07/02
1.4K0
如何使用A2P2V针对特定目标生成攻击序列
关于A2P2V A2P2V,全称为Automated Attack Path Planning and Validation,即自动化攻击路径计划和验证,它是一个计划工具,也是一个网络攻击工具,可以帮助广大研究人员在给特定攻击者目标的情况下确定一组排序攻击序列。该工具的目的是简化流程,以便非专业人士能够使用尽可能多地自动化实现任务,并生成易于理解的安全报告。 A2P2V使用已知的网络拓扑和系统漏洞信息来确定所有攻击序列集,以实现攻击者的目标,并为选定的序列输出所需的步骤(Metasploit命令)。 需要输
FB客服
2023/03/30
4940
如何使用A2P2V针对特定目标生成攻击序列
Chrome 菜单给 angular 的亲儿子关怀
今天在浏览angular中文官网的时候,在浏览器的 … 菜单中,多出来一个Install Angular的选项:
前Thoughtworks-杨焱
2021/12/07
4520
Chrome 菜单给 angular 的亲儿子关怀
在使用chrome调试angular2的时候出现下面问题
在console中不是打印出具体到哪个组件,而是打印出core.es5.js,这样对我的调试困难就加大了很多 如果不小心按到了chrome里的哪个调试开关的时候,自己也不清楚哪里解决好,直接重置就可以。
杭州前端工程师
2018/06/15
1.3K0
android应用程序_chrome Android
最近在看Android源码Setting代码的时候,发现其中配置都是用的PreferenceFragment,以前对这一块不是很了解,
全栈程序员站长
2022/10/04
5140
android应用程序_chrome Android
针对plsql developer使用做的三个小设置
1、原来大家在sql窗口写多条sql语句,如果点击“执行”,那么会执行窗口下的所有语句,如果向执行所要的语句,必须选定它。
williamwong
2018/07/24
1.2K0
针对plsql developer使用做的三个小设置
计算资源及编程-仅针对生信人员
第 5 章 计算资源及编程 5.1 硬件配置 理论上在个人Windows电脑上面做生物信息学数据分析是不实际的,因为太多的生物信息学相关软件的开发者对windows并不熟练,没办法提供完善的基于windows操作系统的软件。 而且个人Windows电脑配置肯定不会太高,一般的组学测序数据都是10~500G一个样本,而且很多软件运行的时候对内存要求很高,最后这些数据的分析过程会非常耗时,个人电脑在硬盘,内存,cpu方面均不足以承担这个重任。 所以一般建议使用配置比较高的服务器,而且建议给服务器安装linux系
生信技能树
2018/03/09
2.2K0
计算资源及编程-仅针对生信人员
Chrome设置断点的各种姿势
Chrome设置断点的各种姿势 最近在翻看Chrome devtools的文档,刚看到了关于断点调试这里,感觉发现了新大陆-。- 本文记录一下如何在Chrome上设置断点,以及可以设置哪些断点,并不涉及具体调试相关的操作。 在JavaScript代码中设置断点 刚工作时被leader安利了Chrome浏览器,那时一说到调试,就知道这一个操作 以为在行号上单击一下就是打断点,就是会调试了:) 当然这也是最最基本的打断点的方式了,当然了,相较于 调试全靠alert 已经高端很多了。
贾顺名
2018/04/12
16.2K1
Chrome设置断点的各种姿势
计算资源及编程-仅针对生信人员
理论上在个人Windows电脑上面做生物信息学数据分析是不实际的,因为太多的生物信息学相关软件的开发者对windows并不熟练,没办法提供完善的基于windows操作系统的软件。 而且个人Windows电脑配置肯定不会太高,一般的组学测序数据都是10~500G一个样本,而且很多软件运行的时候对内存要求很高,最后这些数据的分析过程会非常耗时,个人电脑在硬盘,内存,cpu方面均不足以承担这个重任。
生信技能树
2018/07/27
7720
计算资源及编程-仅针对生信人员
针对业务日志的监控报警设置
需求说明:对线上业务日志进行监控,当日志中出现的ERROR条数超过30条时立即报警! 监控脚本部署到qd-inf-logcollector01服务器上了(需要提前做好qd-inf-logcollector01到业务部署机器的ssh无密码信任关系) 1)qd-inf-logcollector01 机器上的操作记录: [root@qd-inf-logcollector01 ~]$ cd /app/script/ [root@qd-inf-logcollector01 script]$ ll total 37
洗尽了浮华
2018/01/23
1.8K0
仅允许特定用户组通过NetScaler访问虚拟桌面
通常情况下我们的AD环境是为企业内多个业务系统提供服务,在交付Citrix VirtualDesktop环境后,我们通常会通过Citrix ADC(原名叫NetScaler)设备作为安全代理网关进行虚拟桌面访问,默认情况下Citrix ADC与AD集成后,所有用户都允许登录,只不过未经授权的用户无法看到任何资源。
SuperDream
2020/06/03
1.2K0
Linux设置仅秘钥登录
主要是想的自己小博客也没啥机密信息,不会真有人无聊到来黑吧,不会吧不会吧,结果还真有。头晚上发现被破解了也就去改了下root密码,就不想管了,结果第二天中午异地登录了,绷不住了,估计昨晚登录了后还留了其他超级权限账号,还是得想想办法。
Diuut
2022/11/22
1.9K0
Linux设置仅秘钥登录
点击加载更多

相似问题

WordPress数据库错误命令不同步;

271

Wordpress ACF关系不同步

116

MariaDB命令不同步

17

Mysqli命令不同步

22

MySQL“命令不同步”

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文