【问题标题】:In what order does Django (with postgres) return db queries?Django(使用 postgres)以什么顺序返回数据库查询?
【发布时间】:2023-04-05 01:10:02
【问题描述】:

我的网站上有一些内容以不同的顺序显示,具体取决于数据库中上次编辑的内容。

我确认在shell中,返回的顺序是什么

>>>foo.objects.all()

取决于上次编辑的内容。我知道如何使对象按我想要的顺序显示,但我无法解释为什么它在最后一次编辑时拉动它们。它经过数据库中的哪个字段?数据库是否只是按编辑的不同排序?

【问题讨论】:

  • 来自postgres docs如果未选择排序,则将按未指定的顺序返回行。这种情况下的实际顺序将取决于扫描和连接计划类型以及磁盘上的顺序,但不能依赖它。

标签: django postgresql


【解决方案1】:

如果要设置默认排序,请使用ordering meta field

class Foo(models.Model):
  # ...
  class Meta:
    ordering = ['some_field', '-another_field']

如果您不指定此项,则排序取决于底层存储系统。看看this 的答案和你的问题上的comment by solarissmoke

如果需要,您可以稍后使用查询集的 order_by 方法覆盖它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 2016-11-01
    • 2018-09-19
    • 2021-10-22
    • 2020-06-02
    相关资源
    最近更新 更多