37 Фильтрация данных ORM. Методы filter и get. Курс по Django 3

🚀 Add to Chrome – It’s Free - YouTube Summarizer

Category: N/A

Building WordCloud ...

Summary

No summary available.

Transcript

00:00

те мы с вами научились удалять и изменять наши даны а сегодня давайте мы их поговорим о выборки данных мы уже знаем как выбирать все объекты давайте это напомню для этого мы импортируем нашу модельку и так мы обращались к модели у него брали атрибут adgex и

00:18

затем обращались к методу а и вот так мы получали все имеющиеся у нас элементы напоминаю у нас сейчас всего три фильма хранится нашей базе да некоторые из них мы удалили и ранее я показывал что через индексы к методу а мы можем взять

00:35

какой-то конкретный фильм вот например django это будет индекс 1 но обращение такое по индексу она не очень удобна и потому что нужно этот индекс рассчитать но этот индекс никак самой записью не связан это всего лишь порядковый номер в

00:52

вере сети который мы с вами получали а у самой джаги видите поле айди например равно 3 и все остальные параметры не равны единице поэтому еще раз подчеркиваю что индекс в говорит эти никак не связан с самой информация

01:08

внутри записи и мало того что яндекс не связан записью так он еще и может измениться например если мы с вами удалим запись об аватаре он стоит перед жаркой то и затем и jiang это же сместится на единичку левее у нее индекс станет равной нулю во всем этом к вы

01:25

рисуете так вот в мы бы хотели выбирать записи на основании их значений например мы бы хотели обратиться записью которая-де равно давайте 5 и это делается в следующим образом у атрибута объект есть специальный метод который

01:40

называется get и дальше внутреннего вы передаете название вашего поля и ставите условия вот таким образом я хочу выбрать запись с индикатором 5 и у нас все с вами работает выбираем запись сойди 3 там у

01:57

нас будет жанром вот так при помощи где то вы можете обратиться к конкретной записи и обратить внимание в самом скире забросе добавляется вот такое условие мы берем записью которые лидер точно равно трем но с где там будете аккуратны во

02:12

первых у гетто нельзя обращаться к несуществующим значение в колонке например смотрите у нас нету айди номер один мы его удалили вот если вы пытаетесь обратиться к записи который нет вы получаете сразу исключение с

02:29

типом ошибки должна таксист и также вы должны быть уверены что get вам вернет именно один объект например давайте поработаем с рейтингом смотрите мы можем через get также получать записи с определенным рейтинг например у которых

02:45

рейтинг равняется 80 вот мы получаем аватар все верно у него такой рейтинг но давайте у три икса изменим этот рейтинг на такой же сохраняем запись и получаем что у нас сейчас есть две строки в которых

03:01

одинаковый рейтинг попробуем сделать тот же самый запрос и мы получаем с вами другую ошибку смотрите тип ошибки мультиплеер объект средь он то есть get будет вызывать такое исключение случай когда вернется 2 или больше записи и

03:18

отсюда мы значит делаем вывод что если вы хотите пользоваться детом то у вас должна быть одна ровно запись которая попадает под эти условия при этом 0 записей вы не можете получить и больше одной записи вы также не можете получить во всех этих случаях будет ошибки нет

03:36

значит применяется только тогда когда вам нужна одна конкретная запись ну а теперь возникает вопрос а можно ли получить записи по определенному условию и причем записи больше чем 1 и для этого существует другой метод также у adgex он называется фильтр

03:53

здесь вы также должны написать поле давайте например возьмем бюджет и вот у нас есть одинаковый бюджет в 1 миллион и результатом этого будет опять же бы такой запрос где у нас проставляются

04:08

поле vr на бюджет накладывается такое условие и мы видим что результатом будет к в рисе состоящий из двух записей у этого кого ресета мы также можем обращаться по индексам то есть мы например можем брать 0 можем брать эрми и так далее ну а теперь уже видим что

04:25

сюда могут попасть несколько записей теперь что касается вот этих условий здесь мы можем с вами писать равного но не можем с вами писать вот так вот больше django не понимает такой синтаксис случае когда вы хотите использовать

04:41

знаки больше или меньше вы должны будете подписывать вот такие специальные символы они очень похожи на магические методы в питоне которые связаны с сравнением и вот например на больше это будет gt но здесь не нужно подписывать 2

04:56

подчеркивания после да и знак больше вы уже удаляете вот так мы пишем то есть говорим бюджет больше и говорим какого значения и видите в запросе уже подставляется знак больше соответственно если хотите

05:12

написать меньше вы пишете лтп сны обратите внимание здесь мы получаем пустой к ларисе и это значит отличает фильтр от метода get где мы не могли получить 0 записей ну и так же у нас

05:28

есть больше или равно это будет аббревиатуры джей ти и гулять за индейку и соответственно lt и давайте попробуем сравнить на неравенство в питоне неравного пишется вот таким образом но

05:43

мы здесь также получаем с вами ошибку для того чтобы написать не равно вам нужно будет воспользоваться другим методом смотрите он называется x-club мы здесь пишем название нашего поля и

05:59

указываем какое значение мы хотим исключить и вот получаем джанга это единственное записи у которой бюджетный равен вот этому значению теперь давайте разберемся со значением null на него тоже можно сравнивать возьмем все записи где год у

06:16

нас не заполнен для этого мы пользуемся фильтром пишем название нашего поля это будет год и ставим такое значение из ну обратите внимание пишется слитно и этому атрибутом мы должны задать либо true

06:32

либо фолз вот так мы возьмем все записи где и ну вот обратите внимание как это будет отражено в сквере запросе если мы ставим falls the попадается одна запись где мало нет это django ее здесь не было также

06:50

фильтры можно перечислять несколько полей например мы возьмем все пустые записи и давайте посмотрим чем они отличаются эти записи различаются настолько айдишники my и именами ну давайте возьмем ней меня интересует только аватар и

07:08

вот мы получаем эту запись но обратите внимание на блок vr эти два условия обвиняется союзом and то есть мы берём записи в которых выполняется одновременно и значение null в горе стоит и поле name равно аватар как

07:25

поставить здесь союз формы с вами разберем на следующем занятии такой же запрос мы можем с вами сделать например при помощи фильтра и x куда одновременно давайте попробуем провернуть такую ситуацию и так мы исключаем все года где

07:41

не пустые значения значит мы пишем вот таким образом обязательно убедитесь что ставите два нижних подчеркивания вот у нас получается с вами 2 записи и потом мы к

07:57

этим записям применяем фильтр популяный и говорим что нам нужен аватар обратите внимание запрос немножко изменился у нас эндом связывается отрицание и

08:13

проверка назначение ладара теперь что касается текстовых полей у нас с вами есть такой болен и смотрите когда мы ставим условия фильтр ним равно аватар то мы будем проверять конкретно назначение аватар и это значит что если

08:30

бы у нас был аватар 2 то сюда это условие не попала давайте создадим аватар 2 и покажу как это можно сделать другим способом мы до этого пользовались сейфом и создавали экземпляр класса но мы можем сделать иначе мы вызываем метод

08:45

кредит объект и говорим name равно аватар 2 и рейтинг равняется 83 остальные поля мы можем не создавать смотрите после этого мне не нужно

09:02

вызывать метод сейф запись уже автоматически появится в нашей табличке да здесь я правда только допустил ошибку давайте я ее исправлю в нашей табличке здесь буква т должны быть вот сохраняем изменения и теперь мы

09:19

хотим выбрать оба фильма но если мы пользуемся вот таким запросам то нам выберется на полное совпадение то есть именно то имя у которого строка равна аватар чтобы взялись все записи в

09:36

которых есть слово аватар мы можем воспользоваться таким фильтром который называется контент соответственно переводится как содержит и вот теперь у нас попадут обе записи но здесь стоит отметить что смотрите контент чувствительным к регистру букв

09:53

то есть если я напишу аватар с маленькой буквы мы с вами должны увидеть 0 записей почему мы видим тот же самый результат у меня возникает вопрос возможно это зависит от базы данных но в документации написано что контент с чувствительным к

10:09

регистрам а метод и контент не чувствительны к регистру то есть там неважно с большой вы букву пишите или с маленькой все должно попадать под один запрос и контент как я уже сказал переводится как содержит и он работает следующим образом например если я напишу

10:24

букву а просто он будет искать все строки где в именах встречается эта буква и не важно на каком месте поэтому сюда еще попала слова джонга и в запросе это отображается следующим образом знак процента здесь говорит что передал может

10:41

быть сколько угодно символов после а тоже может быть сколько угодно символов также мы можем проверить чтобы наши имена начинались с определенных символов или ими заканчивались за это отвечает такие инструкции как старт swiss

10:57

лишнюю букву е написал вот у нас оба аватара начинается с буквы а если я напишу ago у нас всё ещё будет находиться эти значения давайте напишу g вот здесь уже под этот запрос никто не

11:12

выпадет и есть похожий запрос называется м swiss значит должно заканчиваться этими значениями так вот под а вогу у нас нет а не попадает под гол у нас должна

11:28

выпасть 1 запись вот мы это и видим с вами и напоследок и есть ещё одна штука которая очень важно это реализация союза им воис гель запросе то есть например если я пишу вот таким образом я хочу увидеть конкретно запись где идею равно

11:45

трем но что если я хочу видеть например идиш ник номер 3 5 и 6 одновременно по семь-восемь не хочу так вот здесь мы делаем следующим образом мы подписываем и и здесь списком перечисляем какие орешнике мы хотим с вами видеть и

12:02

вот если они встретятся то они пойдут в наш квари сайт если я пишу видишь ника которого нету никаких ошибок не возникает ну и количество записей соответственно тоже не изменяется и вот так вы можете фильтроваться по вашим данным я оставлю под видео ссылку на в

12:19

документацию вот так она будет выглядеть и смотрите здесь внизу есть так раз все запросы которые мы с вами разбирали вот в разделе fields лук abs их здесь достаточно много но большинство из них мы с вами уже разобрали итак на сегодня

12:34

мы с вами закончим и увидимся в следующем видео всем пока