Как отсортировать набор запросов django с двумя полями как объединенное поле - PullRequest
0 голосов
/ 10 января 2019

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

Я попытался создать аннотированные общие поля и упорядочить их.

class Deadline(models.Model):
    start_date = models.DateTimeField()
    end_date = models.DateTimeField

dl_start = deadline_queryset.annotate(date=F('start_date'))
dl_end = deadlien_queryset.annotate(date=F('end_date'))
dl_all = dl_start.union(dl_end).order_by('date')

Мне нужен график событий.
Посмотрите, есть ли в моем наборе запросов 2 объекта:

Deadline <id: 1, start_date: 12-dec, end_date: 24-jan>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan>

Мне нужен список сроков, таких как:

Deadline <id: 1, start_date: 12-dec, end_date: 24-jan, date: 12-dec>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan, date: 15-dec>
Deadline <id: 2, start_date: 15-dec, end_date: 21-jan, date: 21-jan>
Deadline <id: 1, start_date: 12-dec, end_date: 24-jan, date: 24-jan>

1 Ответ

0 голосов
/ 14 января 2019

В моем вышеупомянутом коде аннотированные поля не переносились после объединения, поэтому я не смог использовать order_by для него.

Сработало после использования следующего варианта:

dl_start = deadline_queryset.annotate(date=F('start_date')).values('id', 'start_date', 'end_date', 'date')
dl_end = deadlien_queryset.annotate(date=F('end_date')).values('id', 'start_date', 'end_date', 'date')
dl_all = dl_start.union(dl_end).order_by('date')

Это помогло мне перенести аннотированное поле date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...