170 похожих чатов

Привет, нормальная ли практика в менеджере модели юзать префетчи? Или

менеджер не должен знать про связанные поля?

9 ответов

19 просмотров

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

Dan- Автор вопроса

Я хочу написать метод, где буду ссылаться на mtm поле, но почему-то подумал что менеджер не должен знать про связи

Так напиши функцию просто для получения нужной инфы, зачем менеджер для этого делать. Менеджер используется для удобного получения определенных объектов модели по параметрам, которые используются очень часто. Префетчить связанные объекты - плохая идея, имхо

Dan- Автор вопроса

Почему плохая идея? Удобное получение объектов по параметрам это разве не фильтрация?

фильтрация. так ты в менеджере фильтрацию и задаешь. можно, конечно, префетчить прямо в менеджере, но я бы префетчил явно каждый раз, когда это необходимо

Dan- Автор вопроса

Понял тебя :) Спасибо

префетчи склонны жрать память, согласен с оратором выше - стоит их юзать по месту использования - это первый момент второй момент - по контексту вопроса могу предположить, что речь о каком-то queryset с связанными таблицами - если так, то в принципе для таких вещей нужно писать логику в Queryset объекте, не в model manager model manager, IMO, должен хранить логику и методы на уровне инстанса модели, всякие хитровыдуманные методы создания/удаления инстанса, или списка инстансов обслуживаемой модели(какой-нибудь свой bulk_create с казино и куртизанками)

Dan- Автор вопроса

Да как раз таки использую QuerySet в связке с менеджером, имеется кастомное создание инстанса в менеджере, все фильтры и получение данных описаны в QuerySet, в менеджере просто создаю методы для вызова фильтраций кверисета

если есть какая-то сложная БЛ, лучше действительно создать отдельный скриптик my_awesome_business_logic, пихнуть туда функцию, а в ModelManager просто создать метод-обёртку над этой функцией модели лучше сразу держать в стерильной чистоте :)

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта