【问题标题】:Get a random record using Django ORM使用 Django ORM 获取随机记录
【发布时间】: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


【解决方案1】:

好像明白了

获取按列过滤的查询集,在我的例子中是城市。就我而言,我也将原来的酒店排除在这组之外。

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)

这就是我在原酒店所在城市随机拉一家酒店的方式。

【讨论】:

    【解决方案2】:

    一个清晰而快速的解决方案就是这样做。

    Hotels.objects.filter(City = City).exclude(id = id).order_by('?')[:1]
    

    order_by('?') 随机排序您的查询集。

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2022-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2013-07-27
      • 2018-06-06
      相关资源
      最近更新 更多