LINUX.ORG.RU

Как сделать такой запрос с помощью DjangoORM?

 


0

1

Есть таблица с кучей записей и отношением к другой таблице.

id   rel        date         status
1    rel_id1    11.12.12     1
2    rel_id1    10.12.12     2
3    rel_id2    09.12.12     3
4    rel_id3    08.12.12     4
5    rel_id2    07.12.12     5
6    rel_id2    06.12.12     6

Хочется сделать такую выборку, чтобы получить все записи с датой меньшей или равной 11.12.12, при чем в выборку должна попасть с запись rel с самой ближайшей датой к 11.12.12, то есть получить следующий набор:

1    rel_id1    11.12.12     1
3    rel_id2    09.12.12     3
4    rel_id3    08.12.12     4

про .order_by('date').distinct('rel') известно, не подходит, т.к. не совместимо с sqlite3 и вообще не думаю что это правильное решение

★★★★★

filter(date__lt=«12.11.12»).order_by("-date")[:1] (тебе же самую свежую строку?)

пишу по памяти, может быть опечатка. Ищи Query API, выборку из топика можно сделать без костылей

DoctorSinus ★★★★★
()
Ответ на: комментарий от DoctorSinus

Так не катит ибо тупо последняя дата выберется, а это не соответствует условию

Siado ★★★★★
() автор топика
Ответ на: комментарий от Siado

тогда я не могу понять, что ты конкретно хочешь

моя команда должна выдавать все записи, в которых значение data меньше 12.11.12, тебе это же надо?)

DoctorSinus ★★★★★
()
Ответ на: комментарий от zz

Да это-то уже успел, интересно вывернуться средствами ORM

Siado ★★★★★
() автор топика
Ответ на: комментарий от DoctorSinus

моя команда должна выдавать все записи, в которых значение data меньше 12.11.12, тебе это же надо?)

Мне не нужны все, мне нужно, чтобы rel не повторялся, я же пример написал

Siado ★★★★★
() автор топика
Ответ на: комментарий от Kalashnikov

.annotate(mdate=Max('date')) это, не?

А вот это уже очень даже похоже. Проверю позднее =)

Siado ★★★★★
() автор топика

create view и читать из него.

d9d9 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.