Size: a a a

Django [ru] #STAY HOME

2019 February 03

DB

Dima Boger in Django [ru] #STAY HOME
Прикрутил нужные и ок, не нужно ничего копипастить 🤔
источник

PB

Petr B. in Django [ru] #STAY HOME
Но зачем?
источник

DB

Dima Boger in Django [ru] #STAY HOME
У меня скорее к дрфу вопрос зачем
источник

AV

Andrey Volkov in Django [ru] #STAY HOME
Petr B.
Не нужно get_queryset копипастить миллион раз
Можно просто писать queryset=... + во многих случаях queryset может отличаться для разных actions - в этом случае удобнее иметь несколько дженериков
источник

DB

Dima Boger in Django [ru] #STAY HOME
Petr B.
Не нужно get_queryset копипастить миллион раз
Если это единственный аргумент, то он невалидный — у дженериков есть миксины, у дженериков есть собранные базовые солянки типа RetrieveUpdateDestroyAPIView
источник

PB

Petr B. in Django [ru] #STAY HOME
Andrey Volkov
Можно просто писать queryset=... + во многих случаях queryset может отличаться для разных actions - в этом случае удобнее иметь несколько дженериков
Что мешает в get_queryset в зависимости от self.action отдавать разное?
источник

AV

Andrey Volkov in Django [ru] #STAY HOME
Petr B.
Что мешает в get_queryset в зависимости от self.action отдавать разное?
То, что к кастомному queryset'у часто соответствует кастомный serializer
источник

PB

Petr B. in Django [ru] #STAY HOME
Andrey Volkov
То, что к кастомному queryset'у часто соответствует кастомный serializer
def get_serializer_class(self)
источник

AV

Andrey Volkov in Django [ru] #STAY HOME
А если менять get_serializer_class таким же способом, то о читаемости и maintainability можно забыть
источник

DB

Dima Boger in Django [ru] #STAY HOME
С читаемостью соглашусь
источник

PB

Petr B. in Django [ru] #STAY HOME
Dima Boger
Если это единственный аргумент, то он невалидный — у дженериков есть миксины, у дженериков есть собранные базовые солянки типа RetrieveUpdateDestroyAPIView
Для вьюсетов это все тоже естб
источник

DB

Dima Boger in Django [ru] #STAY HOME
Petr B.
Для вьюсетов это все тоже естб
Ну то есть я выкидываю дженерики ради вьюсетов потому что просто там тоже такое есть? 🤔
источник

DB

Dima Boger in Django [ru] #STAY HOME
Ну я понимаю, синдром утёнка, все дела
источник

PB

Petr B. in Django [ru] #STAY HOME
Andrey Volkov
А если менять get_serializer_class таким же способом, то о читаемости и maintainability можно забыть
Если запихивать половину апи в один вьюсет то читаемость в любом случае упадет 🤔
источник

PB

Petr B. in Django [ru] #STAY HOME
А ради доп эндпойнта городить дополнительный класс - смысла, имхо, никакого
источник

PB

Petr B. in Django [ru] #STAY HOME
Вьюсет позволяет быстро сделать /пяни/, /пяни/1/, /пяни/1/съесть/, /пяни/проищводители/
источник

PB

Petr B. in Django [ru] #STAY HOME
(хотя последнее наверное стоит вынести в отдельный)
источник

PB

Petr B. in Django [ru] #STAY HOME
Dima Boger
Ну то есть я выкидываю дженерики ради вьюсетов потому что просто там тоже такое есть? 🤔
Вьюсеты в итоге удобнее
источник

AV

Andrey Volkov in Django [ru] #STAY HOME
Ну это скорее различие в целях. Мне не нужна очень быстрая скорость разработки. Overhead с лишним функционалом и высокоуровневая архитектура, к которой сложно нацепить логи/сигналы/доп.проверки - это то, что остается для меня от вьюсетов
источник

PB

Petr B. in Django [ru] #STAY HOME
Это ещё и компактность кода
источник