Size: a a a

Django [ru] #STAY HOME

2021 April 06

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Почему не декоратор в данном случае?
в каком именно?
источник

Р

Руслан in Django [ru] #STAY HOME
Всё, большое спасибо)
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
в каком именно?
Вместо префетч Филд сериализатора
источник

AD

Alex Dem in Django [ru] #STAY HOME
Руслан
С селектом также поступить?
хотя у меня проекте select_related почти не используется, по факту
prefetch_related решает все проблемы, в большинстве своем)
источник

N

Nire in Django [ru] #STAY HOME
Я видел много проектов, где использовали декораторы, а миксины для префетча нет
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Я видел много проектов, где использовали декораторы, а миксины для префетча нет
Я не понимаю о чем ты меня спрашиваешь, если честно
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Я видел много проектов, где использовали декораторы, а миксины для префетча нет
Миксин с @abstractmethod подразумевает, что ты должен имплементировать метод
источник

AD

Alex Dem in Django [ru] #STAY HOME
Руслан
Всё, большое спасибо)
я тебя чуть-чуть обманул, у меня видимо что-то не получилось с  @abstractmethod, поэтому реализация чуть более примитивная

class PrefetchedFieldsSerializerMixin:
 
   @staticmethod
   def get_fields_to_be_prefetched(request):
       raise NotImplementedError

Миксин полностью тут https://pastebin.com/HMFcE0ci ,
написан уже с учетом того, что надо рекурсивно собирать строковые и Prefetch() префетчи
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
Я не понимаю о чем ты меня спрашиваешь, если честно
Там суть была в оборачивании запроса путем декорирования его и поиска релейтед связей по имени аргументов.
Т.е. ты свой filter(blabla__tata) запрос оборачиваешь и декоратор автоматом в префетч Тата добавляет
источник

N

Nire in Django [ru] #STAY HOME
На дрф форумах где-то нашел такое решение (потом в проектах встречал пару раз), как приду на работу, поищу
источник

Р

Руслан in Django [ru] #STAY HOME
Nire
На дрф форумах где-то нашел такое решение (потом в проектах встречал пару раз), как приду на работу, поищу
Пинганёшь?
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Там суть была в оборачивании запроса путем декорирования его и поиска релейтед связей по имени аргументов.
Т.е. ты свой filter(blabla__tata) запрос оборачиваешь и декоратор автоматом в префетч Тата добавляет
Ну и как ты это налепишь на ViewSet в котором у тебя в динамике меняется сериализатор?
источник

N

Nire in Django [ru] #STAY HOME
Alex Dem
Ну и как ты это налепишь на ViewSet в котором у тебя в динамике меняется сериализатор?
Так там дело в декорировании самого get_queryset
источник

N

Nire in Django [ru] #STAY HOME
Т.е. префетч ты в нем же делаешь
источник

AD

Alex Dem in Django [ru] #STAY HOME
Nire
Так там дело в декорировании самого get_queryset
я понимаю
но если у тебя 5 сериализаторов?
источник

AD

Alex Dem in Django [ru] #STAY HOME
у нас сериализаторы проключаются из аргументов запроса
источник

AD

Alex Dem in Django [ru] #STAY HOME
serializer=filter/create/some_app_serializer
источник

N

Nire in Django [ru] #STAY HOME
Ну вот у меня если разные сериализаторы, то разные пути
источник

N

Nire in Django [ru] #STAY HOME
Так легче поддерживать в слабосвязи
источник

AD

Alex Dem in Django [ru] #STAY HOME
Alex Dem
у нас сериализаторы проключаются из аргументов запроса
это первое
второе - это bullshit тема, если у тебя разные комбинации nested сериализации
каждый раз заново будешь писать префетчи для разных комбинаций :)
источник