Надо их отображать в одном списке в следующем порядке: 1) Сначала срочные. 2) Далее невыполненные. 3) Далее остатки с сортировкой по дате от недавних до старых.
Попробовал так:
vtodos = db.vtodo.find({'$or': [
{"user": user, 'next_time': {'$lt': now}}.sort(
[("completed", 1), ("is_project", -1)]),
{"user": user, 'completed': None}.sort(
[("is_project", -1)]),
{"user": user}.sort(
[("completed", -1), ("is_project", -1)]), ]})
Но оказалось, что сортировку так внутри запроса нельзя применять.
Пока что в python получается проще всего решить. Правда пагинацию не понятно как тогда на уровне бд реализовать
Обсуждают сегодня