- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我喜欢 Django,喜欢它实现的分页功能。但是,我在尝试跨多个页面拆分随机排序的查询集时遇到了问题。
例如,我在查询集中有 100 个元素,并希望一次显示 25 个。将上下文对象作为随机排序的查询集提供(使用 .order_by('?') 规范),每次请求新页面时都会将全新的查询集加载到上下文中(第 2、3、4 页)。
明确说明:我如何(或我可以)请求一个随机排序的查询集,并在可消化的页面上显示它?
最佳答案
我最近遇到了同样的问题,我不想缓存所有结果。我为解决这个问题所做的是结合使用 .extra() 和 raw()。这是它的样子:
raw_sql = str(queryset.extra(select={'sort_key': 'random()'})
.order_by('sort_key').query)
set_seed = "SELECT setseed(%s);" % float(random_seed)
queryset = self.model.objects.raw(set_seed + raw_sql)
我相信这只适用于 postgres。在 MySQL 中做类似的事情可能更简单,因为您可以将种子直接传递给 RAND(123)
。在 ajax 调用的情况下,种子可以存储在 session /cookie/您的前端中。
警告 - 有更好的方法这实际上是一个非常缓慢的操作。我找到了 this blog post描述了一种非常好的方法,既可以检索单个结果,也可以检索结果集。在这种情况下,种子将用于您的本地随机数生成器。
关于Django分页随机: order_by ('?' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21469800/
如何根据多对多关系条件是否为真来对查询集进行排序? 即 class Publication(models.Model): name = models.CharField(max_length=
我想获取 MyModel order_by('-end_date') 的最后 100 条记录,并对不同的获胜者类型进行 SUM 注释 MyModel.objects.all()[:100].order
我想根据两个因素对 QuerySet 进行排序。 A 和 B,但它应该将 A 优先于 B。也就是说,它应该对 A 进行排序,但是如果 A 对 QuerySet 中的两个对象相等,则它应该对因子 B 对
重复: Using a Django custom model method property in order_by() 我有两个模型;一个存储帖子,另一个存储对这些帖子进行的投票,使用外键字段进行
我在模型 roll_numb 中有字段。 roll_numb 的值如下。 070-001 070-007 070-343 080-002 080-008 当我 order_by roll_numb 时
所以我在使用order_by函数的查询中使用preload遇到麻烦。 通常我在order_by函数中使用list_member list_member def list_members() do qu
我们有一个复杂的查询,它使用跨表和 order_by 的联接。 示例如下: select distinct `accounts`.`id`, `accounts`.`number_of_lis
我有一个这样的数据库 order_id | date | qty ------------------------------------ a |2018-1
假设我有一列包含 1-100 之间的浮点值。 我希望能够将该值转换为 1-10 之间精度较低的整数,然后根据这个新值对结果进行排序。 想要降低排序的精确度似乎很奇怪,但 SQL 语句按 2 列排序,如
我有范围内的距离数据,例如 5-10、0-5、10-15、 我正在使用此查询来按排序顺序获取数据: $this->db->select("distance_from_mall"); $this->db
我必须对包含主机名的对象列表进行排序。 主机名采用以下格式:h1、h5、h10、h12、h12-abc、h1000、x10 如果我使用 order_by('hostname') 它会这样排序: h1,
我在 MySQL 数据库中有一系列“编号”的 varchar 字段: +-----------+ | name | +-----------+ | thing 1 | | thing
我不想运行查询来获取所有超过 6 个 com 的文章,然后根据 com 列表的长度进行排序,为此,我这样做了: ArticleModel.objects.filter(com__6__exists=
我有一个模型 Line,其中包含一个 total_value 和一个 group 字段。我使用以下代码获取给定组中具有最高值的 10 行: group_lines = Line.objects.fil
已阅读 django docs on order_by 有一个注释/警告(如果我理解正确的话)说: 如果您使用多值字段对查询集进行排序,则该查询集中具有多个相关项的每个元素都将多次添加到由 order
我正在使用 Django 1.7.7。 我想知道是否有人经历过这种情况。这是我的查询: events = Event.objects.filter( Q(date__gt=my_date) |
我在我的 template.php 文件中使用查询来显示 wooCommerce按类别分类的产品。 我的查询如下所示: 'product', 'stock' => 1, 'pos
我处于必须通过用于存储街道地址的 CharField 输出相当大的对象列表的情况。 我的问题是,显然数据是按 ASCII 代码排序的,因为它是一个 Charfield,具有可预测的结果......它像
Foo.objects.all().distinct('foo')不会删除重复项 Foo.objects.all().order_by().distinct('foo')确实删除它们。 我有 Meta
我喜欢 Django,喜欢它实现的分页功能。但是,我在尝试跨多个页面拆分随机排序的查询集时遇到了问题。 例如,我在查询集中有 100 个元素,并希望一次显示 25 个。将上下文对象作为随机排序的查询集
我是一名优秀的程序员,十分优秀!