使用索引列表筛选查询集

2024-04-27 04:12:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的查询集

QS = SomeModel.objects.filter(some_filter='filter_value')

我需要从中随机选取n个元素,所以我生成了一个由n个介于0到QS长度之间的随机数组成的列表,放入一个列表变量idx\u list中。你知道吗

现在,我可以在idx\u列表中循环,一次从QS中提取一个元素,但是,我可以不循环地在一行中完成吗?你知道吗


Tags: 元素列表objectsvaluesomefilterlistsomemodel
1条回答
网友
1楼 · 发布于 2024-04-27 04:12:40

如果要从db和中提取项,可以使用^{}随机选择对象,然后生成id列表

您只能使用values_list()以随机顺序获取id

idx_list = SomeModel.objects.filter(some_filter='filter_value').order_by('?').values_list('id', flat=True)[:x]

或者您可以获取查询集:

QS = SomeModel.objects.filter(some_filter='filter_value').order_by('?')

然后,根据需要切割任意多个项目:

# Get id's of random x elements
idx_list = map(lambda item: item.id, list(QS[0:x]))

相关问题 更多 >