如何为适用于相关管理器的 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()
时,类(class)可能会乱序。
理想情况下,解决方案不涉及对查询数据库的庞大现有代码库进行任何更改。
注:数据库为Postgresql
最佳答案
据我所知,有一个hack
您可以制作一个管理器方法,如
class SomeManagerSet(models.QuerySet):
def ordered(self):
return self.order_by("id")
并通过以下方式在模型中激活它
objects = SomeManagerSet.as_manager()
然后在相关查询中使用 subject.course_set.ordered()
关于python - 相关查询中的 Django 元排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41402996/