#5. Методы save(), create() и update() класса Serializer | Уроки по Django REST Framework

  Рет қаралды 59,122

selfedu

selfedu

2 жыл бұрын

Практический курс по Django: stepik.org/a/183363
Определяем сериализатор для добавления и изменения записей в БД с помощью методов create() и update(). Рассматривается метод save() сериализатора для запуска процесса изменения данных.
Телеграм-канал: t.me/django_selfedu
Инфо-сайт: proproprogs.ru/django
drfsite-5.zip: github.com/selfedu-rus/rest-f...

Пікірлер: 122
@user-hv4lr2lx4i
@user-hv4lr2lx4i Жыл бұрын
Отличный курс как и все ваши остальные по Питону и Django. Небольшое дополнение. Если совсем уж по высокой классике Rest API запрос в примере должен быть не PUT а PATCH. PATCH частичное изменение записи. Т.е. переданные поля изменяются. А значение не переданных остается прежним. Как и реализовано в примере. А PUT - это полная замена записи. Т.е. не переданные поля заполняются пустыми значениями или выбиваются исключения. Но это конечно сейчас далеко не все соблюдают. Часто даже post используется как для добавления так и для изменения.
@pungushe
@pungushe 2 жыл бұрын
Спасибо. За то, что вы делаете. Всегда интересно смотреть
@kolobokgaming4093
@kolobokgaming4093 2 жыл бұрын
Спасибо за видео по DRF, очень интересно, полезно, а главное простым языком и без воды рассказано
@airguy5964
@airguy5964 Жыл бұрын
Великолепное изложение мысли. Все очень доходчиво объяснили. Спасибо большое за прекрасный урок.
@KravaDota
@KravaDota 9 ай бұрын
Хорошо после прочтения документации закреплять новые знания подобными курсами, но и не нужно забывать упражняться, а тут ещё и всё вместе, супер
@user-ip2qw2dd3u
@user-ip2qw2dd3u Жыл бұрын
Лучший! Не забрасывай Django, хотелось бы увидеть от тебя что-то вроде создания личного кабинета пользователя, поиск
@kvv.official
@kvv.official 11 ай бұрын
Код Удаления если кому то понадобится - def delete(self, request, *args, **kwargs): pk = kwargs.get("pk", None) if not pk: return Response({"ERROR": "Delete Method Is Not Allowed"}) # deleting an object from api try: instance = Woman.objects.get(pk=pk) instance.delete() except: return Response({"ERROR": "Object Not Found !"}) return Response({"post": f"Object {str(pk)} is deleted"})
@stasmarussin4511
@stasmarussin4511 11 ай бұрын
Women*
@MrNagios
@MrNagios 6 ай бұрын
и это дело воспроизводится во вьюшке я так понимаю. Сериализатору тут не остается работы?
@jadrezz.g
@jadrezz.g 24 күн бұрын
@@MrNagios Судя по всему да, т.к даже в документации иных методов, кроме create() и update() к переопределению не предлагается
@KikrAzz
@KikrAzz Жыл бұрын
Спасибо! уроки - огонь! Очень здорово и доступно!
@glebboyko8256
@glebboyko8256 2 жыл бұрын
Невероятно хорошо подаёте материал, пробовал читать документацию, но погруз на долго, разбор там плоховат (я вроде как русскую версию читал), благодаря вам наконец понял что к чему. Огромное вам спасибо!
@saintshell3190
@saintshell3190 Жыл бұрын
Я человек простой. Прохожу занятие, ставлю лайк и иду отдыхать! Спасибо за урок!
@basepy5167
@basepy5167 2 жыл бұрын
очень классные видео мне очень понравилось как ты объясняешь
@user-tb8io7hh4f
@user-tb8io7hh4f Жыл бұрын
Вроде так но это не точно)) В сериалайзере писать ничего не надо,url новый создавать тоже! Может кому надо Спасибо Сергей огромное за уроки!Лучший! def delete(self, request, *args, **kwargs): pk = kwargs.get('pk', None) if not pk: return Response({'error': "Method delete not allowed"}) try: record = Women.objects.filter(pk=pk) record.delete() except: return Response({'error': "Object does not exist"}) return Response({"post": "delete post " + str(pk)})
@user-kn8gx1ob7n
@user-kn8gx1ob7n 5 ай бұрын
В блоке try достаточно одной строки Women.objects.get(pk=pk).delete() для удаления, переменная record нам в принципе не нужна, к тому же мы удаляем конкретную запись и лучше использовать метод .get()
@user-tb8io7hh4f
@user-tb8io7hh4f 5 ай бұрын
@@user-kn8gx1ob7n Наверное сейчас я тоже так бы и сделал,но это было давно
@uladzislawchyrets
@uladzislawchyrets 2 жыл бұрын
Спасибо за проделанную работу
@andredru4278
@andredru4278 10 ай бұрын
Спасибо. Очень толково рассказано.
@sergeyvarfolomeev2627
@sergeyvarfolomeev2627 2 жыл бұрын
Серёга, ну уже почти целый день нет урока :( Мозг жаждит твоих уроков, пальцы скучают по новым комбинациям клавиш. Очень ждем-с я )
@slaviksemen4919
@slaviksemen4919 2 жыл бұрын
Спасибо. Мне бек приходилось писать только на nodeJs hapiJs. То там все было многословнее. Крутой фреймворк
@BorisenkoV89
@BorisenkoV89 2 жыл бұрын
Спасибо, жду Вьюсеты
@azeramikishiyev1703
@azeramikishiyev1703 2 жыл бұрын
Круто!!!)
@dodokwak
@dodokwak 2 жыл бұрын
Большое спасибо. У меня есть вопрос о том, как соотносятся методы create и update в сериализаторе и представлениях. Насколько я понимаю, сначала запрос обрабатывается в представлении, и перед вызовом в неё метода save поступившие данные передаются сериализатору для валидации и создания объекта в базе данных, или обновлении объекта. Если это так, то какую роль играют аналогичные методы (create и update) в представлении? Спасибо.
@user-xv7sh6lp7o
@user-xv7sh6lp7o 2 жыл бұрын
Спасибо! 👍
@johnmazepa
@johnmazepa 3 ай бұрын
о, приятно осознавать, что все мои переживания по поводу непонятной работы кастомных сериалайзеров из уроков 3 и 4 - беспочвенны, ведь оказывается у джанго_дрф они уже есть нормальные из коробки. но комментарии под теми уроками удалять не буду - пусть лежат и помогают активности канала
@hovosimonyan799
@hovosimonyan799 2 жыл бұрын
Спасибо!
@user-hz5hf4ix4x
@user-hz5hf4ix4x 2 жыл бұрын
Здравствуйте! а как сделать так, что бы можно было сразу несколько записей изменять? т.е. в джанго приходят данные о нескольких вуманах в виде массива [ {"title": "Вуман 1", ...}, {"title": "Вуман 2", ...}, {"title": "Вуман 3", ...} ]
@andrey3147
@andrey3147 Жыл бұрын
Подскажите, пожалуйста. А как сделать запрос update с передачей только одного атрибута для изменения, например, title. Если я отправляю такой запрос, то данные не проходят валидацию, так как поля content и cat_id обязательные.
@donfedor007
@donfedor007 2 жыл бұрын
Доброе время суток. Метод get_or_create можно переопределить? Или он не явно вызывает метод create?
@WolfKrugerr
@WolfKrugerr Жыл бұрын
С many-to-many есть проблемы. В json строке передаю список с числовыми значениями внешних ключей, а он пишет что нужно применить метод set().
@takida7498
@takida7498 2 жыл бұрын
Спасибо за видео. P.S. Уши резало Ааааа! Create - Криэйт
@idpolice
@idpolice Жыл бұрын
Покажите ответ на "домашнее задание" - как удалять записи по pk. У меня ничего не получается. Зачем при удалении сериализатор, если есть вьюха? Какой метод вызывать: save или delete? Нужно ли писать url типа '/delete/? Всё же непонятно что за что отвечает и как это работает(
@user-si3jx5lc6x
@user-si3jx5lc6x Жыл бұрын
thanks for a lot 👍👍
@user-gq4ph9gj3y
@user-gq4ph9gj3y 2 жыл бұрын
Ребят, кто сделал, можете поделиться пожалуйста. Я просто реализовал в контроллере, но не в Сериализаторе. Можно ли узнать, что это за метод
@ibrahimoglu
@ibrahimoglu 2 жыл бұрын
👍
@MrNagios
@MrNagios 6 ай бұрын
еще интересно, как эти методы вызывать из веб страницы? Назначать формам соответствующие методы?
@user-zc4fi3kl7l
@user-zc4fi3kl7l 2 жыл бұрын
Спасибо, большое. Очень хорошие уроки. Лучший материал по АПИ который попадался. Хотел уточнить 1 момент. Почему мы в модели указали cat а в базе оно сохранилось как cat_id и в сериалайзерах мы работаем с cat_id
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Спасибо! Там нужно указывать (в этом конкретном примере) ссылку на объект внешнего ключа (ForeignKey), который мы создаем в модели.
@dzhegutin9876
@dzhegutin9876 Жыл бұрын
здравствуйте! все делаю как на видео. но такая ошибка : { "detail": "Метод \"POST\" не разрешен." }
@Anonim-im6ln
@Anonim-im6ln Жыл бұрын
👍👍👍
@SemyonKalyakulin
@SemyonKalyakulin 2 жыл бұрын
4:49 строка 30. Почему мы перенимаем значение validated_data.time_update, а не устанавливаем текущее время системы? Подскажите, пожалуйста
@SemyonKalyakulin
@SemyonKalyakulin Жыл бұрын
Сам вот сижу, ломаю голову
@sergejstreck7026
@sergejstreck7026 27 күн бұрын
подскажите, что Вы сделали, чтобы objects не подчеркивался, как ошибка или предупреждение?
@jamjam3337
@jamjam3337 7 ай бұрын
👏👍
@andrewharazdowskyy4771
@andrewharazdowskyy4771 2 жыл бұрын
Уважаемый Сергей! После детального разбора предыдущего урока по основам класса Serializer - от этого урока получил истинное удовольствие. Спасибо огромное! и нескромный вопрос: планируется ли хотя бы одно занятие по связке DRF с фронтом (в произвольной реализации)?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Спасибо! Я, думаю, фронт - это отдельная тема, здесь затрагивать не буду.
@andrewharazdowskyy4771
@andrewharazdowskyy4771 2 жыл бұрын
@@selfedu_rus По большому счету согласен... Кто с какого фронта умеет - с того пускай и заходит...)
@sashka671
@sashka671 2 жыл бұрын
Я тут новичок. Все таки подскажите по методу delete. Натолкните на мысль)))
@user-un2mc2ll4y
@user-un2mc2ll4y Жыл бұрын
Если мы CRUD поместим в сериализатор, то нафиг нам тогда класс представления нужен?
@user-rl7dv8qn7z
@user-rl7dv8qn7z 2 жыл бұрын
Аргументы request, *args можно не писать, если они не используются?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
request, вроде обязательно, *args да, можно опускать
@maz5718
@maz5718 Жыл бұрын
Спасибо за уроки! У меня вопрос: В serializer.py def update(self, instance, validated_data): instance.title = validated_data.get("title", instance.title) instance.content = validated_data.get("content", instance.content ) instance.time_update = validated_data.get("time_update", instance.time_update) instance.is_published = validated_data.get("is_published", instance.is_published) instance.cat_id = validated_data.get("cat_id", instance.cat_id) instance.save() return instance Зачем мы прописываем в конце в скобках instance. ???? При этом при использовании put функции ели убрать instance. ничего не изменится, обязательно должен прописать "title", "content", "cat_id" иначе ошибка("Обязательное поле.") А при использовании instance. тоже самое, хотя как я понимаю, если нет в запросе , то подставляется из instance. А если я пишу patch функцию я обязательно должен прописать "title", "content", "cat_id" иначе ошибка("Обязательное поле.") Поэтому я patch реализовал так: def patch(self, request, *args, **kwargs): pk = kwargs.get("pk", None) if not pk: return Response({"error": "Method PUT not allowed"}) try: instance = Women.objects.get(pk=pk) except: return Response({"error": "Object does not exists"}) data_req = request.data data_req.setdefault('title', instance.title) data_req.setdefault('content',instance.content) data_req.setdefault('cat_id',instance.cat_id) serializer = WomenSerializer(data=data_req, instance=instance) serializer.is_valid(raise_exception=True) serializer.save() return Response({"post": serializer.data})
@FASTiman
@FASTiman Жыл бұрын
про необходимость instance тут вроде объяснил: kzbin.info/www/bejne/qoiac5prr7Ksgas
@rostislavmalyshev1775
@rostislavmalyshev1775 2 жыл бұрын
Спасибо, очень полезная информация! Хотелось бы уточнить пару вопросов: 1.Почему почти во всех учебных видео забывают упомянуть метод patch? 2. А что дает проверка if not pk? Если pk отсутствует, просто не будет перехода на url path('api/v1/womenlist//'), а если переход осуществился, значит pk присутствует.
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Django автоматически использует pk как идентификатор записи (главный ключ - primary key). Поэтому, будет очень странно, если его не будет )) По patch, да, наверное тоже нужно было сказать, но там все по аналогии с другими подобными методами.
@rostislavmalyshev1775
@rostislavmalyshev1775 2 жыл бұрын
@@selfedu_rus"Поэтому, будет очень странно, если его не будет ))"- Я это и имел ввиду. И хотел спросить, зачем дополнительно проверять его наличие?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@rostislavmalyshev1775 ммм.. а где он проверяется у меня?
@rostislavmalyshev1775
@rostislavmalyshev1775 2 жыл бұрын
@@selfedu_rus Мне не совсем понятно назначение именно этой проверки: pk = kwargs.get("pk", None) *if not pk:...*
@glebboyko8256
@glebboyko8256 2 жыл бұрын
@@rostislavmalyshev1775 Мы можем сделать PUT запрос, но не указать pk (/women/list/), программа выкинет джанговскую ошибку, мол а где pk, а эта строка переопределяет эту ошибку из джанговской в JSON ответ пользователю return response.Response({'error' : 'Method PUT not allowed'}), т.е. мы просим из kwargs дать нам pk, если нет тогда pk = None, потом смотрим pk == None? (not pk тоже самое что и pk == None) и кидаем JSON ответ с текстом ошибки 'Method PUT not allowed' - Метод НЕ доступен
@valex4933
@valex4933 2 жыл бұрын
Вот я напишу backend на DRF, а как мне это в шаблон выводить?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Может вам и не нужен API? Отдавайте обычные HTML-документы. Если же делаете, то формат JSON удобен для разных конечных устройств, не только браузеров. Ну а парсинг в браузере можно через JS сделать.
@proxxxy01
@proxxxy01 2 жыл бұрын
А будут ли какие-либо примеры взаимодействия апишки со стороны клиента? Через react.js, например
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Для этого я беру Postman
@sergeyvarfolomeev2627
@sergeyvarfolomeev2627 2 жыл бұрын
я как раз сейчас учусь делать Фронт на Реакте а бэк на Джанго. Ты видимо тоже? ))
@proxxxy01
@proxxxy01 2 жыл бұрын
@@sergeyvarfolomeev2627 Ну типа того) Создание более гибкое получается, нежели все монолитно на джанго писать
@pirojok4523
@pirojok4523 Жыл бұрын
как удалять записи?
@Pavel_Aliaksei
@Pavel_Aliaksei 2 жыл бұрын
Добрый день прописал такой метод , когда через постмэн делаю делитед-запрос удаляется запись и ид идёт не по порядку в бд как это исправить, что бы после удаления ид переписывался и начинался с единицы в бд ??? def delete(self, request, *args, **kwargs): pk = kwargs.get('pk', None) if not pk: return Response({'error': 'Method delete not found'}) try: instance = Women.objects.get(pk=pk) instance.delete() except: return Response({'error': 'Object not found'}) return Response({"post": "delete post " + str(pk)})
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Так не делают, СУБД не начинает id с начала при удалении, а продолжает. Это сделано для ускорения процесса обработки записей. Вам нужно продумывать логику работы с БД, учитывая эту и другие возможные особенности.
@denis5232
@denis5232 Жыл бұрын
@@selfedu_rus А можно ли реализовать удаление другим образом что бы PK при добавлении новых записей не пропускало удаленные значения ? Посмотрел у вас не определен этот метод. Или это делается только при определении логики бд ? Каким образом тогда быть ? Добавлять новое поле id для того что бы можно было удалять его и счетчик корректно обрабатывал. Подскажите пожалуйста благодарю за ранее.
@valerie_-_
@valerie_-_ 2 жыл бұрын
Появилась проблема. Через Postman PUT запрос прекрасно работает, а через браузер при переходе на урл выдаёт ошибку "get() got an unexpected argument 'pk' ". Подскажите с чем может быть связано
@cheerfulplay1067
@cheerfulplay1067 Жыл бұрын
Если мы вводим запрос в адресную строку, браузер автоматически посылает GET запрос на наш сервер, к которому не привязан маршрут с первичным ключом
@metall011
@metall011 2 ай бұрын
----views def put(self, request, *args, **kwargs): usergoal_pk = kwargs.get('usergoal_pk', None) if not usergoal_pk: return Response({'error': 'Method PUT not allowed'}) try: instance = UserGoal.objects.get(pk=usergoal_pk) except: return Response({'error': 'Object does not exists'}) serializer = UserGoalSerializer(data=request.data, instance=instance) serializer.is_valid(raise_exception=True) serializer.save() return Response({"post": serializer.data}) ----urls path('api/v1/goallist//', GoalAPIView.as_view()), ----models def get_absolute_url(self): return reverse('usergoal', kwargs={'usergoal_pk': self.pk})
@kohan______
@kohan______ Жыл бұрын
Моя версия домашнего задания: def delete(self, request, *args, **kwargs): pk = kwargs.get('pk', None) if not pk: return Response({"error": "Method Delete not allowed"}) try: instance = Woman.objects.get(pk=pk) instance.delete() except: return Response({"error": "Object does not exists"}) return Response({"post": "delete post" * str(pk)})
@nevermore222
@nevermore222 10 ай бұрын
Это прям очень сложно для понимания ... У меня задача за три дня освоить основы а мне кажется я тут и за неделю не справляюсь . Насколько же сложно
@user-zm2fm5mr9d
@user-zm2fm5mr9d 9 ай бұрын
освоил?
@yantar6542
@yantar6542 2 жыл бұрын
Когда кидаю пут запрос выдаёт: "Ошибка доступа. Ошибка проверки CSRF. Запрос отклонён.". Что делать?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
метод put() для обработки PUT запроса не прописали, скорее всего
@yantar6542
@yantar6542 2 жыл бұрын
в этом и суть, что всё прописано, как я понял, он не может доступ к базе данных даже получить
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@yantar6542 это уже в телеграм-канал
@user-gb9ut9pi7y
@user-gb9ut9pi7y 2 жыл бұрын
Это нормально что я смог реализовать удаление лишь через метод delete во views без использования одноименного метода в сериализаторе? Я целый час пытался прикрутить удаление через serialize но ничего не выходит. Кто как решил?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Можно в телеграм-канале это узнать.
@ayansultan9764
@ayansultan9764 2 жыл бұрын
@@selfedu_rus нету ответа в телеграм канале
@Sumrock
@Sumrock 2 жыл бұрын
Я где-то вычитал что метод delete() настолько прост что не делегируется сериализатору, а выполняется из вьюхи. Насколько правда не знаю, но так выглядит действительно проще чем лишний метод в сери-ре
@user-gb9ut9pi7y
@user-gb9ut9pi7y 2 жыл бұрын
@@Sumrock спасибо!
@user-ls1ee6rv9w
@user-ls1ee6rv9w 2 жыл бұрын
"photo": [ "Ни одного файла не было отправлено." ] выдает это при create() , хотя в модели прописано blank=True
@user-ls1ee6rv9w
@user-ls1ee6rv9w 2 жыл бұрын
и это я делаю в браузере, а постман вообще отказывается работать со мной на Post запросах {"detail":"Неподдерживаемый тип данных \"text/plain\" в запросе."}
@selfedu_rus
@selfedu_rus 2 жыл бұрын
в Postman нужно выбирать JSON при отправке данных, а у вас по умолчанию стоит HTML
@user-ls1ee6rv9w
@user-ls1ee6rv9w 2 жыл бұрын
@@selfedu_rus спасибо) а как быть если это 2 модель связи manytomany. Делать отдельный сериализатор без этого поля на postзапрос ? А на get оставить полный сериализтор ?ибо при пост он требует его ввести вне зависимости что в моделb blank=true null=true и не требует только если я его удаляю из сериализатора , но тогда и гет получается без этого поля, а когда с ним выдает вместо автора vka.author.None в консоле null has no effect on ManyToManyField. помогите пожалуста
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@user-ls1ee6rv9w если поле передавать не нужно (только читать), то в сериализаторе для нужного поля прописывает параметр read_only=True
@user-ls1ee6rv9w
@user-ls1ee6rv9w 2 жыл бұрын
@@selfedu_rus Спасибо)
@WCoder
@WCoder 2 жыл бұрын
Огромное Спасибо вам! Но вот мне очень интересно сколько времени понадобится вам за одну видео ролик (с монтажом и с сенарием)?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Я уже рассказывал об этом в видео "Как я создаю обучающие видео". В среднем, часа 3-4
@user-cd3mf7vp4j
@user-cd3mf7vp4j 11 ай бұрын
​@@selfedu_rusНикак не могу найти это видео, его удалили?
@Kirill_rus_
@Kirill_rus_ Жыл бұрын
Вот ДЗ, если кто не понял как его сделать: def delete(self, request, *args, **kwargs): pk = kwargs.get("pk", None) if not pk: return Response({"error": "Method DELETE not allowed"}) # здесь код для удаления записи с переданным pk try: record= Women.objects.get(pk=pk) record.delete() except: return Response({"error": "Object does not exists"}) return Response({"post": "delete post " + str(pk)})
@Sergey-cz7ym
@Sergey-cz7ym Жыл бұрын
или так Women.objects.filter(id=pk).delete()
@Sergey-cz7ym
@Sergey-cz7ym Жыл бұрын
или такЖ Women.objects.filter(pk=pk).delete() не могу понять почему работает и .filter(pk=pk) и .filter(id=pk). Как ORM понимает что в pk передаем иденно id? ЗЫ: всё, понял, pk это и есть id - (primary key), который ORM сам создал за нас
@user-ls2ew7ye9m
@user-ls2ew7ye9m 2 жыл бұрын
Здорово конечно, но ничего не понятно
@one317
@one317 2 жыл бұрын
try ... instance.delete()
@denis5232
@denis5232 Жыл бұрын
Но при таком способе при добавлении новых записей в бд у них изменяется номер pk для новых записей они идут не по порядку, а начиная с последнего удаленного. Как по другому можно удалять записи что бы счетчик не сбивался ?
@qweqwe6215
@qweqwe6215 Жыл бұрын
def update(self, instance: Woman, validated_data): for k, v in validated_data.items(): setattr(instance, k, v) instance.time_update = instance.time_update instance.save() return instance То что нужно обновим. Что не обновляется, останется без изменения
@zergzerg4844
@zergzerg4844 7 ай бұрын
А что за метод setattr ? Что он делает?
@eggiopain5758
@eggiopain5758 2 жыл бұрын
+++
@user-jd4rl7im6d
@user-jd4rl7im6d Жыл бұрын
Че то плохую практику транслируете, работать с БД из сериализаторов не стоит, метод create должен возвращать экземпляр объекта с валидированными данными, а не делать запись в БД. Эту работу необходимо делегировать в отдельный слой работы программы. Хотя сама Джанга к этому располагает, конечно.
@kohan______
@kohan______ Жыл бұрын
Если это плохая практика, то где нужно реализовывать данный функционал? Я джуниор разработчик, сейчас изучаю Апи Фреймворк и мне важно понимать насколько данные знания будут для меня полезны, ибо не хочется писать говнокод на проекте
@user-jd4rl7im6d
@user-jd4rl7im6d Жыл бұрын
@@kohan______ отдельные классы для этого создаются, как правило из называют Репозиториями, в которые и скрывают всю работу с бд
@user-ym3yt1uq7s
@user-ym3yt1uq7s 5 ай бұрын
Че реально Сергей Балакирев что-то ужасное предложил? У него одни из самых лучших курсов на степике и талант преподавания. Ваш комментарий меня прям испугал как-то
@user-jd4rl7im6d
@user-jd4rl7im6d 5 ай бұрын
@@user-ym3yt1uq7s нет, не ужасное
@sharyar_t
@sharyar_t 2 жыл бұрын
Откуда у Вас такой акцент?
@NickTyupin
@NickTyupin 2 жыл бұрын
Вам важен акцент или знания, которые Вам дают совершенно бесплатно?
@user-xd6lk3nw5x
@user-xd6lk3nw5x 7 ай бұрын
Всем добрый день! Кто-нибудь может подскажет, что у меня за ошибка выскакивает при отправке PUT-запроса: TypeError at /api/v1/womenlist/9/ fromisoformat: argument must be str. Весь код прописан как в видео.
@metall011
@metall011 2 ай бұрын
мой код: ----views def put(self, request, *args, **kwargs): usergoal_pk = kwargs.get('usergoal_pk', None) if not usergoal_pk: return Response({'error': 'Method PUT not allowed'}) try: instance = UserGoal.objects.get(pk=usergoal_pk) except: return Response({'error': 'Object does not exists'}) serializer = UserGoalSerializer(data=request.data, instance=instance) serializer.is_valid(raise_exception=True) serializer.save() return Response({"post": serializer.data}) ----urls path('api/v1/goallist//', GoalAPIView.as_view()), ----models def get_absolute_url(self): return reverse('usergoal', kwargs={'usergoal_pk': self.pk})
@tenelokis
@tenelokis Жыл бұрын
а почему один класс и create и update и get... ? разве нельзя разнести функционал по разным классам и на каждый метод написать свой сериализатор ? например через ModelSerializer и класс Meta, указав поля для чтения, поля для изменения и поля для отображения ?
@GetEnjoyChannel
@GetEnjoyChannel Жыл бұрын
Нельзя CRUD операции писать в сериалайзере. Это рушит бизнеслогику приложения. За такое вас уволят)
@kohan______
@kohan______ Жыл бұрын
Если это плохая практика, то где нужно реализовывать данный функционал? Я джуниор разработчик, сейчас изучаю Апи Фреймворк и мне важно понимать насколько данные знания будут для меня полезны, ибо не хочется писать говнокод на проекте
@farfromsouls
@farfromsouls Жыл бұрын
@@kohan______ +++ тот же вопрос
@vikvik8241
@vikvik8241 2 жыл бұрын
Спасибо! 👍
Best KFC Homemade For My Son #cooking #shorts
00:58
BANKII
Рет қаралды 53 МЛН
Became invisible for one day!  #funny #wednesday #memes
00:25
Watch Me
Рет қаралды 59 МЛН
THEY made a RAINBOW M&M 🤩😳 LeoNata family #shorts
00:49
LeoNata Family
Рет қаралды 42 МЛН
Django Rest Framework | Serializers & CRUD
22:40
Dennis Ivy
Рет қаралды 382 М.
Что такое Framework простыми словами?
9:51
Sergey Nemchinskiy
Рет қаралды 184 М.
Custom user Django | Настройка проекта Django Rest | Sound Cloud #1
22:22
Django School | Омельченко Михаил
Рет қаралды 14 М.
Понять Django. Пишем "Hello world". Объясняю просто и с картинками.
25:49
Клуб дедов-программистов
Рет қаралды 180 М.
Best KFC Homemade For My Son #cooking #shorts
00:58
BANKII
Рет қаралды 53 МЛН