You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Р: При испоьзовании всех полей модели в сериализаторе, достаточно использовать '__all__'
Явное лучше неявного.
При добавлении поля в модель в будущем, оно также попадёт в сериализатор, что не всегда является желательным и потребует редактирования сериализатора.
Также, при необходимост исключения существующего поля, достаточно вычеркнуть его из списка.
Р: Подписку/Избранное/Корзину лучше сделать как отдельную модель.
Django специально предоставляет возможность не заморачиваться прописыванием М2М моделей и не тратить чернила на их явное прописывание, если эти модели состоят только из FK, а иначе - зачем нам Django?
Р: user = self.context.get('request').user слишком сложно, нужно писать user = self.request.user
К сожалению, у сериализатора, в отличии от вюьсета, изначально нет атрибута request. Создание такого атрибута вручную - ничем не лучше передачи через контекст. Что то словарь, что это словарь, оба они словари.
При этом, конечно, не обязательно передавать request, можно передать только user, а можно использовать view, которое уже есть в контексте.
Р: Проверять вводные данные нужно в методах валидации сериализатора, а не в модели.
Это на самом деле так, если б не одно НО. У нас есть админка и удаление проверки из модели позволит администратору вводить некорректные данные.