55 Настройка формы элемента. Курс по Django

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

Category: N/A

Building WordCloud ...

Summary

No summary available.

Transcript

00:00

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

00:17

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

00:34

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

00:49

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

01:05

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

01:20

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

01:37

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

01:55

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

02:11

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

02:27

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

02:43

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

02:58

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

03:13

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

03:30

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

03:46

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

04:02

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

04:19

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

04:38

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

04:55

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

05:11

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

05:26

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

05:42

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

06:00

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

06:17

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

06:34

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

06:50

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

07:06

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

07:22

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

07:38

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

07:54

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

08:10

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

08:25

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

08:42

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

09:01

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

09:16

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

09:33

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

09:50

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

10:06

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

10:22

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