Django ORM如何返回分组随机查询集

时间:2014-03-06 16:33:18

标签: python django-orm

我需要在一个查询集中返回一组随机组。例如,我目前返回了以下数据集:

ID  Identity  Name

 1     E       Foo

 4     S       Bar

 2     E       Ted

 3     S       Bob

 5     S       Jen

我需要对Identity列进行分组,以便'E'和'S'一起返回,但每次都以随机顺序返回。 IE:

查询1:

ID  Identity  Name

 1     E       Foo

 2     E       Ted

 4     S       Bar

 3     S       Bob

 5     S       Jen

如果我再次运行它:

查询2:

ID  Identity  Name

 2     E       Ted

 1     E       Foo

 4     S       Bar

 5     S       Jen

 3     S       Bob

我不确定使用Django ORM功能是否可行。请指教。提前谢谢,因为我对Django有点新鲜。另外,我知道我可以发送Raw查询并获得结果。如果可能的话,我想尽量避免这种情况。如果没有,我理解。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我相信你不能在查询集中这样做,但是你可以在python中使用随机模块并按照身份排序:

import random
objects = list(queryset)
random.shuffle(objects)
objects.sort(key=lambda x: x.Identity)
实际上,就像在中指定的一样 docs,您可以随意订购。

尝试这样的事情:

queryset.order_by('Identity', '?')