【发布时间】:2018-09-28 05:16:41
【问题描述】:
我需要在数组中使用类似查询
我在 keywords_array 中有数组:["rk.keywords LIKE '%%Donut%%'", "OR rk.keywords LIKE '%%Pizza%%'"]
我需要在 raw_query 最后在 where 条件中添加它,但它正在返回单个数组(OR rk.keywords LIKE '%%Pizza%%') :
Views.py
keywords_array=[]
for i in keyword:
keywords={}
if keyword[0]==i:
keywords="rk.keywords LIKE '%%"+i+"%%'"
else:
keywords="OR rk.keywords LIKE '%%"+i+"%%'"
keywords_array.append(keywords)
for t in keywords_array:
raw_query="SELECT r.id,( 3959 * Acos(Cos(Radians(" +lat +")) * Cos(Radians(lat)) * Cos( Radians(lng) - Radians("+lng+")) + Sin (Radians("+lat+")) * Sin(Radians(lat)))) AS distance FROM backend_restaurant r LEFT JOIN backend_restaurant_keywords m2m ON m2m.restaurant_id = r.id LEFT JOIN backend_restaurantkeyword rk ON m2m.id = rk.id WHERE "+ t +""
打印(原始查询)
SELECT r.id,( 3959 * Acos(Cos(Radians(30.704649)) * Cos(Radians(lat)) * Cos( Radians(lng) - Radians(76.717873)) + Sin (Radians(30.704649)) * Sin(Radians(lat)))) AS distance FROM backend_restaurant r LEFT JOIN backend_restaurant_keywords m2m ON m2m.restaurant_id = r.id LEFT JOIN backend_restaurantkeyword rk ON m2m.id = rk.id WHERE OR rk.keywords LIKE '%%Pizza%%'
【问题讨论】:
-
您的原始查询处于 if else 条件下,因此您的数组中只有一个查询
-
这个条件是在查询中追加 OR 是否返回数组 ["rk.keywords LIKE '%%Donut%%'", "OR rk.keywords LIKE '%%Pizza%%'" ]
-
好的,我明白了。等待发布答案
标签: python django python-3.x django-views