Я отредактировал свой предыдущий пост, поэтому, возможно, его легче понять:
У меня есть следующие модели
class Course(models.Model):
name = models.Charfield(max_length=255)
class CourseDay(models.Model):
course = models.ForeignKey(Course)
date = models.DateField()
Для моего просмотра я фильтрую все объекты следующим образом:
courses = Course.objects.filter(models.Q(courseday__date__gt=date_filter) |
models.Q(courseday__isnull=True))
Это дает мне все подходящие курсы для данного фильтра.Это может включать в себя один курс несколько раз для каждого соответствующего дня курса.Результат для курса с 2 днями и один с одним днем может выглядеть так:
<QuerySet [<Course: 5 test>, <Course: 9 Latex>, <Course: 5 test>]>
Чтобы получить дубликаты, я использую следующий фильтр:
courses = Course.objects.filter(models.Q(courseday__date__gt=date_filter) |
models.Q(courseday__isnull=True)).distinct()
Я получаюмой набор запросов курсов без дубликатов.Теперь я хочу упорядочить этот набор запросов по дате связанных курсовых дней.
У меня есть два варианта.Первый:
courses.order_by("courseday__date")
Второй - отредактировать класс Course и добавить Meta-класс.
class CourseDay(...):
...
class Meta:
ordering= ["courseday__date"]
Оба варианта сортируют массив, как я и хотел, но еслиЯ записываю в журнал свой Query Set, и я становлюсь таким:
<QuerySet [<Course: 5 test>, <Course: 9 Latex>, <Course: 5 test>]>
Теперь, если я использовал отдельный или использую его в этом Query Set, он не будет фильтровать дубликаты всегда.Я знаю, что могу, например, сначала отсортировать QS и вручную отфильтровать все дубликаты, но мне это не кажется правильным.