有可能在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已有几个月的时间了,但是它应该遵循正确的原则。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)