python - 相关查询中的 Django 元排序

标签 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() 时,类(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/

相关文章:

python - 使用 .service 文件 (ubuntu) 在启动时运行 Gunicorn 实例

android - 使用 Http Post 发送图像

python - 使用Django的抽象类来进行简单的代码复用是否合适?

python - 使用gunicorn运行Django : Bad Request (400)

python - 如何使用 7d 频率的 pandas Grouper 并用 0 填充缺失的天数?

python - 非成员运算符重载(特别是运算符==)在 Cython 中是否被破坏?

jquery - Django Jquery : based on selection, 显示更多选择选项

python - Django - 通过Ajax发布jQuery字典在views.py中打印None

Python:未安装 _imagingft C 模块

python - PyQt 和 QML - 如何创建自定义数据模型