相关查询中的Django Meta排序

时间:2016-12-30 21:38:40

标签: python django

如何设置适用于相关管理器的Django查询的默认顺序?

您可以使用Meta.ordering设置默认订单:

class Subject(Model):
    title = TextField()

class Course(Model):
    subject = ForeignKey(Subject)

    class Meta:
        ordering = ['id']

这将在您运行Course.objects.all()时设置顺序。但是当你运行subject.course_set.all()时,课程可能会出现故障。

理想情况下,解决方案不会对查询数据库的庞大现有代码库进行任何更改。

注意:数据库是Postgresql

1 个答案:

答案 0 :(得分:0)

据我所知,有一个黑客 您可以制作像

这样的经理方法
class SomeManagerSet(models.QuerySet):
    def ordered(self):
        return self.order_by("id")

通过

在模型中激活它
objects = SomeManagerSet.as_manager()

然后在subject.course_set.ordered()

等相关查询中使用