В приложении Django несколько представлений могут содержать похожие запросы БД.
Например, запрос для всех объектов, где is_active = True и is_online = True.
Во время рефакторинга такие повторяющиеся вызовы необходимо переместить в функцию, и вопрос заключается в том, где лучше разместить эту функцию фильтра / запроса.
1) В определение класса / сущности? Но должен ли объект «знать» о своих собственных методах фильтрации?
Это кажется типичным решением, но может быть не очень хорошим дизайном, так как выбор ощущается как функция, внешняя по отношению к объекту. С другой стороны, такие методы внутри объекта не создают побочных эффектов и кажутся довольно безопасными.
2) В какой-то модуль / пространство имен, занимающееся фильтрацией, например, filter.Users, filter.Entities?
Или где-то еще?
Какая лучшая практика?