Сейчас моя специализация РНР и как-то привык писать на Yii и Symfony, работать с абстракцией и Dependecy Injection
Сейчас пробую изучить Python вообще и Django в частности и начал писать на этом фреймворке большой проект. Так вот пока ещё не сильно углубился хочется узнать насколько Django гибок и позволяет писать код в том же стиле что и проекты на Stmfony, использовать сервисный слой и так далее?
sim3x, когда я работал с ActiveRecord в Yii то в нкоторых проектах бизнес логика была описана в модели и когда модель меняется только в 1 месте кода, тогда все вроде бы неплохо, но когда в проекте несколько разных flow то приходится уже придумывать костыли.
Да и выборка делается проще, когда она вынесена в сервис. Простой пример:
У меня есть таблица с операциями, есть поле post_date, booking_date = первое поле - дата создания записи, второе поле - дата когда операция была реально осуществлена.
Везде в коде я делаю выборку .filter(post_date=2018-01-01)
теперь я подумал что мне надо выбирать все записи не по этому полю, а по booking_date
Тогда мне надо пройтись по всему коду и заменить post_date= на booking_date=
А так, я вынес всю выборку в менеджер или сервис и меняю это только в 1 месте.
*service.find_by_date(....)
Второй пример:
Я хочу получить список писем, отправленных клиенту, у меня есть таблица, в которой я храню все письма. В коде я тоже везде использую выборку из базы напрямую. Но теперь я переключился на какой-нибудь сервис и хочу забирать список писем по API, но сам объект "письмо" не меняется, меняется только источник данных. Опять же меняю источник в сервисе, делаю гидрацию, маппинг, что-угодно, возращаю все тот же объект.
vitovt,
1. Используйте кастомный manager
2. KISS. Сделайте два блока с получением маилов. Складывайте их в дикт перед обработкой
Правка models ни к чему хорошему не приведет
И я посоветовал отдельно задать второй вопрос на тостере - вам могут подсказать решение красивее моего