gpt4 book ai didi

python - 用于从查询集中获取 ID、打乱 ID 并按打乱顺序查询数据库的 Django 代码

转载 作者:行者123 更新时间:2023-11-29 07:18:15 27 4
gpt4 key购买 nike

我正在尝试在 Django 中执行以下操作:

  1. 执行数据库查询以返回满足查询的所有记录的 ID。
  2. 将查询中的 ID 列表打乱为随机顺序。
  3. 创建一个新查询集,以按打乱的顺序从数据库获取记录。

因此,如果我的初始数据库查询如下所示:

queryset = Item.objects.filter(my_field = a_value)

如何从查询中获取 ID 列表,以便可以随机播放:

random.shuffle(list_of_ids_matching_query)

即我想从查询集中创建 list_of_ids_matching_query,但我不知道如何做到这一点。

然后我计划按照以下方式进行查询:

queryset = Item.objects.filter(pk__in=list_of_ids_matching_query)

但我需要查询以与打乱列表中的 ID 相同的顺序返回记录。它会这样做吗?或者我是否必须一次从数据库中提取一条记录。

我正在尝试做的事情,并且很可能有更好的方法来做到这一点,就是从数据库中以随机顺序获取一组随机结果。

最佳答案

尝试这个查询

list_of_ids_matching_query = list(Item.objects.filter(my_field = a_value).values_list('id', flat=True))

要按照与打乱列表中的 ID 相同的顺序获取记录,

ordering = 'FIELD(`id`, %s)' % ','.join(str(id) for id in shuffiled_list)
Item.objects.filter(pk__in=shuffiled_list).extra(select={'ordering': ordering }, order_by=('ordering', ))

关于python - 用于从查询集中获取 ID、打乱 ID 并按打乱顺序查询数据库的 Django 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37103895/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com