我需要帮助转换这个原始的SQL查询:
Hotels.objects.raw('SELECT * FROM HotelAPP_hotels WHERE City = %s ORDER BY RAND() LIMIT 1',[City]);
答案 0 :(得分:0)
明确而快速的解决方案就是这样做。
Hotels.objects.filter(City = City).exclude(id = id).order_by('?')[:1]
order_by('?')随机排序您的查询集。
答案 1 :(得分:-1)
似乎已经弄明白了
获取一个按列过滤的查询集,在我的案例中为city。在我的情况下,我也从这一组中排除了原来的酒店。
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)
这就是我在同一个城市拉随机酒店的原因。