Django模型使用相关表字段的默认排序顺序

22 django django-models

是否可以将模型的默认排序顺序设置为来自相关模型的字段(而不是整数键),即产生带有两个模型的字段的SQL order by子句的东西?如果是这样,怎么样?我可以通过query_by来做到这一点,但我无法弄清楚如何默认设置它.谢谢.

class Foo(models.Model):
    name = models.CharField(max_length=50)

class Bar(models.Model):
    related = models.ForeignKey(Foo)
    bar_date = models.DateField()

    class Meta:
        ordering = ('bar_date', 'related.name', )
Run Code Online (Sandbox Code Playgroud)

小智 27

我使用django 1.2.7而不是连接ForeignKey.Attribute我们应该使用"__",所以这段代码将起作用:

class Meta:
    ordering = ('bar_date', 'related__name', )
Run Code Online (Sandbox Code Playgroud)


Stu*_*lds 5

看看order-with-respect-to

  • 这很重要,因为现在已经是 2021 年了,而且我们已经使用了 Django 3.2。SO 上的许多答案都非常古老,值得一提的是,这个答案即使现在仍然有效。 (2认同)