54 Создание фильтра Django Admin. Курс по Django

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

Category: N/A

Building WordCloud ...

Summary

No summary available.

Transcript

00:00

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

00:16

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

00:32

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

00:47

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

01:03

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

01:20

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

01:36

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

01:54

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

02:11

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

02:27

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

02:43

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

03:00

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

03:16

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

03:33

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

03:49

строчку затем у нас будет средний высокий и давайте высочайшей здесь мы напишем от 40 до 59 давайте продублируем

04:04

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

04:21

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

04:39

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

04:55

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

05:11

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

05:28

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

05:44

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

06:01

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

06:18

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

06:35

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

06:50

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

07:08

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

07:24

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

07:39

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

07:55

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

08:10

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

08:27

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

08:45

записи не оказалось давайте вернем все наши записи и у кого-то из фильма сделаем реально низкий рейтинг например 20 и здесь запишем 10 нажимаем сохранить и фильтруем ся по низкому рейтинга и вот

09:01

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

09:19

и great zen-o эквол значит это больше равна 40 и можно сделать двойной фильтрации мы опять же фильтруем ся и уже говорим что второе условие у нас должна быть меньше 60 ну вот числа от 40 включительно до 60 не

09:37

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

09:54

сохраните запись вот 60 у нас не должно попасть в средний рейтинг потому что 60 и это граничащие значение но вот если мы сделаем из него 59 то оно уже должно попадать сюда

10:10

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