Я хочу отсортировать мои Store модели по времени их открытия.Модели магазина содержат функцию is_open, которая управляет диапазонами времени открытия магазина и выдает логическое значение, если он открыт или нет.Проблема в том, что я не хочу сортировать свой набор запросов вручную из-за проблем эффективности.Я подумал, что если я напишу пользовательскую функцию аннотирования, я смогу более эффективно фильтровать запрос.
Так что я погуглил и обнаружил, что могу расширить агрегатный класс Django.Из того, что я понял, я должен использовать предопределенные функции SQL, такие как MAX, AVG и т. Д. Дело в том, что я хочу проверить, что сегодняшняя дата находится в заданном списке временных интервалов.Так что кто-нибудь может мне помочь, какое имя sql я должен использовать?
Редактировать
Я хотел бы разместить код здесь, но это действительно спагетти.Код длиной в одну страницу генерирует только временные интервалы и проверяет подходящий.
Я хочу избежать:
alg= lambda r: (not (s.is_open() and s.reachable))
sorted(stores,key=alg)
и заменить на:
Store.objects.annotate(is_open = CheckOpen(datetime.today())).order_by('is_open')
Но я совершенно не понимаю, как написать CheckOpen ...