栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用余弦球定律按Django中的接近度过滤邮政编码

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用余弦球定律按Django中的接近度过滤邮政编码

有可能在Django中执行原始SQL查询。

我的建议是,编写查询以提取ID列表(看起来像您现在正在执行的操作),然后使用ID提取关联的模型(在常规的非原始SQL
Django查询中)。尝试使您的SQL尽可能独立于方言,这样一来,即使您必须切换数据库,也不必担心另一件事。

为了澄清,这是一个如何做的例子:

def get_models_within_25 (self):    from django.db import connection, transaction    cursor = connection.cursor()    cursor.execute("""SELECt id, (         3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *         cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *         sin( radians( lat ) ) ) )        AS distance FROM stores HAVINg distance < 25        ORDER BY distance LIMIT 0 , 20;""")    ids = [row[0] for row in cursor.fetchall()]    return MyModel.filter(id__in=ids)

作为免责声明,我不能保证这段代码,因为我编写任何Django已有几个月的时间了,但是它应该遵循正确的原则。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/636956.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号