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)