Django: Как упорядочить по имени поля модели, затем по первой записи и полю ее обратного кверисета?

Я использую Postgres в качестве бэкенда базы данных.

У меня есть груз, который имеет несколько остановок, каждая из которых назначена перевозчику.

Каждая остановка имеет назначение через поле DateTimeField.

Я пытаюсь отсортировать все грузы по названию_компании перевозчика, затем по назначению остановки. Таблица для иллюстрации

Shipment # | Carrier      | 1st Appointment Time
10001      |  ABC Freight | 01/01/2023 17:00
10002      |  ABC Freight | 01/01/2023 20:00
90001      |  XYZ Freight | 01/01/2023 08:00
90002      |  XYZ Freight | 01/01/2023 11:00

Первое решение из оболочки:

from app.models import Load

Load.objects.all().order_by('carrier__company_name', 'stops__appointment')

Проблема: Возвращает дублирующиеся записи кверисета Loads.

Когда я пытаюсь add .distinct('id') возникает следующая ошибка

SELECT DISTINCT ON expressions must match initial ORDER BY expressions
LINE 1: SELECT DISTINCT ON ("app_load"."id") "app_load"."id", "app_l...

Какие функции запроса мне нужно объединить, чтобы получить этот результат?

models.py

class Load(models.Model)
    shipment = models.CharField(max_length=100, blank=True)
    carrier = models.ForeignKey(Carrier, blank=True)

class Carrier(models.Model):
    company_name = models.CharField(max_length=100)

class Stop(models.Model):
    load = models.ForeignKey(Load, 
         on_delete=models.CASCADE, 
         related_name='stops')
    appointment = models.DateTimeField(blank=True, null=True)
Вернуться на верх