在 Django 中打乱查询集
Shuffle queryset in Django
我希望在 django 中只混洗部分查询集。
qs = [obj1(order=0), obj2(order=1), obj3(order=999), obj4(order=999), .....]
查询集按 'order' 字段排序,可以是 0 - 999 之间的任何值。
最后的结果应该是所有不是999的对象都会从0开始排序,
只有顺序为 999 的对象才会被打乱。
可以吗?
鉴于查询集不是太大而不能作为列表排序,您可以执行以下操作:
shuffled = sorted(qs, key=lambda item: item.order if item.order != 999 else 999 + random.random())
我希望在 django 中只混洗部分查询集。
qs = [obj1(order=0), obj2(order=1), obj3(order=999), obj4(order=999), .....]
查询集按 'order' 字段排序,可以是 0 - 999 之间的任何值。
最后的结果应该是所有不是999的对象都会从0开始排序,
只有顺序为 999 的对象才会被打乱。
可以吗?
鉴于查询集不是太大而不能作为列表排序,您可以执行以下操作:
shuffled = sorted(qs, key=lambda item: item.order if item.order != 999 else 999 + random.random())