首页 > 解决方案 > django order_by 的行为

问题描述

我有 3 个模型:

class Parent(models.Model):
    name = models.CharField()


class StudentDriver(models.Model):
    parent = models.ForeignKey(Parent, on_delete=models.CASCADE)


class Car(models.Model):
    student_driver = models.ForeignKey(StudentDriver, on_delete=models.CASCADE)

为什么,如果我执行以下操作,order_by则不兑现(我的 qs 不会由 student_driver.parent_id 订购)?有没有办法订购它?我需要它来进行分组。

for car in Car.objects.order_by('student_driver__parent'):
    print(car.student_driver.parent)

如果我做:

for car in Car.objects.order_by('student_driver'):
    print(car.student_driver)

它没有问题(qs 由 student_driver_id 排序)。似乎是 ForeignKey 链接,但我无法弄清楚。

标签: djangosql-order-by

解决方案


我认为它有效:

for car in Car.objects.all().order_by('student_driver__parent__id'):
    print(car.student_driver.parent.id)

推荐阅读