【发布时间】:2017-10-04 20:30:04
【问题描述】:
我需要帮助转换这个原始 sql 查询:
Hotels.objects.raw('SELECT * FROM HotelAPP_hotels WHERE City = %s ORDER BY RAND() LIMIT 1',[City]);
【问题讨论】:
-
你想把这个sql查询转换成什么?
标签: sql django-models orm
我需要帮助转换这个原始 sql 查询:
Hotels.objects.raw('SELECT * FROM HotelAPP_hotels WHERE City = %s ORDER BY RAND() LIMIT 1',[City]);
【问题讨论】:
标签: sql django-models orm
好像明白了
获取按列过滤的查询集,在我的例子中是城市。就我而言,我也将原来的酒店排除在这组之外。
NearbyHotels = Hotels.objects.filter(City = City).exclude(id = id)
命名一个列表
Nearbyid = []
将每个检索到的对象的 id 添加到列表中
for Hotel in NearbyHotels:
Nearbyid.append(Hotel.id)
随机选择一个 ID
randomid = random.choice(Nearbyid)
检索与随机 id 匹配的单个对象
Recommendation = Hotels.objects.get(id = randomid)
这就是我在原酒店所在城市随机拉一家酒店的方式。
【讨论】:
一个清晰而快速的解决方案就是这样做。
Hotels.objects.filter(City = City).exclude(id = id).order_by('?')[:1]
order_by('?') 随机排序您的查询集。
【讨论】: