а .order_by('resolved_by_user__user_roles') не работает?
Там дело в том, что мне потом надо указать order_by по другому полю для всего запроса. Вообще задача в том, что в цикле надо получить данные по роли пользователя. Поэтому я пытаюсь до цикла получить данные о роли
Там дело в том, что мне потом надо указать order_by по другому полю для всего запроса. Вообще задача в том, что в цикле надо получить данные по роли пользователя. Поэтому я пытаюсь до цикла получить данные о роли
зайди с другой стороны и иногда лучше сделать два запроса, чем один но тяжелый
Есть модель Incident. У нее есть поле resolved_by_user. Это связь ManyToOne с моделью User. У модели User есть ManyToMany с Role. Существует проблема в коде - в цикле перебираются все Incident и по каждому требуется узнать роль юзера, который лежит в поле resolved_by_user. На данный момент это можно сделать просто взяв первую роль из списка ролей, принадлежащих пользователю. Чтобы в цикле не плодить запросы мне надо перед ним забрать для всех Incident эти роли.
просто сделать prefetch_related('resolved_by_user__roles') нельзя, так как если я внутри цикла потом буду вызывать first() у incident.resolved_by_user__roles, то в бд все равно будет сделан лишний запрос. Решение состоит в том, чтобы в Prefetch указать queryset с явным order_by, но сделать это в описанном выше случае у меня не получается.
Есть модель Incident. У нее есть поле resolved_by_user. Это связь ManyToOne с моделью User. У модели User есть ManyToMany с Role. Существует проблема в коде - в цикле перебираются все Incident и по каждому требуется узнать роль юзера, который лежит в поле resolved_by_user. На данный момент это можно сделать просто взяв первую роль из списка ролей, принадлежащих пользователю. Чтобы в цикле не плодить запросы мне надо перед ним забрать для всех Incident эти роли.
сделай аннотацию когда делаешь Prefetch() User с использованием Subquery, который в свою очередь должен возвращать правильную роль
а потом итерируясь по Incident бери значение из аннотированного поля у связанного юзера
У меня в проекте есть что-то типа месанджера: Есть пользователи, они могут создавать между собой закрытые чаты. Сами чаты и сообщения фронт получает по REST API. Но сейчас столкнулись с проблемой, что у меня фронт запрпшивает чаты по таймауту раз в секунду (да очень плохой вариант). Фронтендер сказал что надо сделать на веб сокетах следующее: при новом сообщени в чате отправлять по ws юзерам уведомления об ээтом, чтобы раз в секунду не слать запросы на бек. Он так упадет когда-нибудь. Вот тут я и затупил. По логике я подумал, что можно для этого использовать сигналы. Короче кто-то сталкивался с таким? Может помочь?