background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022"

input logo icon
Теги видео
|

Теги видео

education
it-academy
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:01
али
00:00:07
так
00:00:08
рутина часто на вас отметить там у кого
00:00:12
какие вопросы пока готовьте
00:00:15
их и не хотя какие могут быть вопросы
00:00:19
прекрасно
00:00:20
рассказал
00:00:22
так александр
00:00:29
н андрей
00:00:39
clam она
00:00:44
есть и
00:00:50
есть
00:00:56
так кирилл
00:00:59
есть
00:01:02
члена
00:01:07
раме
00:01:12
мир
00:01:14
есть
00:01:25
так сергей
00:01:33
игр
00:01:43
есть
00:02:01
мулино ешь есть
00:02:04
так кто у меня тут что все что-ли есть
00:02:08
да что ж такое то
00:02:09
прям все ходят
00:02:15
не продолжим значит
00:02:19
сегодня уже вам
00:02:23
отправлю tz на сайт как же как же так же
00:02:27
ты за
00:02:29
никак поэтому
00:02:32
будет т.д. кто не знает
00:02:38
ну почему нельзя кстати комедия
00:02:41
закидывать на
00:02:44
give up ну static еще ладно static еще
00:02:49
ладно но
00:02:52
значит
00:02:54
потому что сама идея логикой вообще
00:02:58
вообще можно технически можно никто не
00:03:00
мешает он туда все это загрузить лад но
00:03:03
надо понимать зачем потому что
00:03:09
для git hop все эти diplo бы обе багеты
00:03:14
все gedit вообще предназначен для versio
00:03:17
нирования исходного кода программы
00:03:20
исходного кода
00:03:24
значит
00:03:26
static еще но статике ладно они еще как
00:03:30
бы у
00:03:34
раз уж они статике они можно их
00:03:38
рассматривать как
00:03:41
значит
00:03:42
нечто такое который является частью
00:03:46
исходного кода вашего приложения
00:03:49
но
00:03:51
медиа это динамические файлы которые
00:03:55
пользователи вам загружают в приложении
00:03:58
их картинки их там я не знаю что они там
00:04:01
документы какие-то
00:04:03
грузят еще что-то в общем но
00:04:07
такие вот вещи так вот эту фишку нашел
00:04:11
поэтому
00:04:12
почему вот эти статике которые вы
00:04:15
отдельно создали они их не должно быть в
00:04:20
django потому что то что вы руками
00:04:23
создали на сервере отдельную папку и
00:04:26
куда с
00:04:28
командой collect static статике были
00:04:31
просто скопированы язык приложения в эту
00:04:34
отдельную папку сама вот этого действа
00:04:36
которое произошло
00:04:38
скопированный из приложения в папку
00:04:41
static то есть они уже там были внутри
00:04:44
они так и есть они
00:04:46
джанга идет с завода так сказать уже с
00:04:49
готовым приложением админка админ со
00:04:53
всеми стати коми которые нужны стиле
00:04:55
иконки еще что то она там используют вот
00:05:00
все вот у нее же есть если вы в гитхаба
00:05:04
закинете
00:05:05
[музыка]
00:05:07
папку с вашего сервера который вдруг там
00:05:11
организовалась но это будет как минимум
00:05:14
дублируется
00:05:17
она про дублируется так они же хранятся
00:05:20
на сервере а при обновлении в гетто
00:05:23
остаток
00:05:29
но как это технически конечно же
00:05:32
отправлять можно
00:05:34
так копия в секунду
00:05:44
сейчас очко отправлю сюда трк
00:05:47
техническое задание
00:05:49
вот а вот мега в общем если вы закинете
00:05:54
в эту папку которую вы создали руками вы
00:05:57
за дублируйте просто за дублируйте эти
00:06:00
статике они будут у вас лежать в двух
00:06:03
местах это раз это что у вас
00:06:07
папка со стариками
00:06:10
оказалось ну так создали прям в папке
00:06:13
вашего юзера home это так случилось на
00:06:18
самом деле самая идея вынесения этих
00:06:20
папок media & static отдельно она
00:06:23
направлен на то что дать возможность их
00:06:26
разместить в специальном месте в
00:06:29
специальном то есть возможно на
00:06:30
каком-нибудь сетевом диске
00:06:32
возможно на отдельном диске там которые
00:06:35
там по сети пристёгнут который более
00:06:38
быстро действенный или еще что то в
00:06:40
общем
00:06:41
обращаться с ними специальным образом и
00:06:44
если посмотреть на ту картинку которая
00:06:47
там была та
00:06:50
запрос к этим столиком и к медиа файлам
00:06:54
тоже он даже не доходит до сервера
00:06:57
приложений то есть он не питоном
00:06:59
обрабатывается впереди стоящим отдельным
00:07:02
веб-сервером который видит ага это стати
00:07:05
ты тут нет никакой особой логики лилит
00:07:07
это меди и тут нет никакой особой логики
00:07:10
здесь не надо запускать приложения и
00:07:13
что-то там делать пытаться как-то
00:07:16
выяснить просто отдай их с диска поэтому
00:07:19
они выносятся отдельно им не место на
00:07:24
гитхабе
00:07:26
представьте ну статике ладно еще с
00:07:30
натяжкой можно да там как бы
00:07:32
git их она при том что они и так есть ги
00:07:35
те то есть они лежат внутри приложения
00:07:37
специально выделенных для этого папках а
00:07:40
collect static из этих специально
00:07:43
выделенных папок просто она идет по
00:07:45
приложению по всем приложениям которые
00:07:47
есть в вашем проекте джангар бежит этот
00:07:50
при клочок этих ста тиков заходит в
00:07:53
каждое приложение смотрит в папку static
00:07:55
внутри и если что то есть копирует в это
00:07:58
вот специально и положи местоположение
00:08:00
для сервера поэтому если вы укажите
00:08:02
папку то как минимум вы за дублируйте
00:08:05
как минимум за дублируйте ее просто
00:08:08
кроме того она там не нужна а насчет
00:08:11
медиа представьте если вам закачивают
00:08:13
видео в видео какие-то фильмы да там
00:08:16
видеофайлы и что вам пользователь там у
00:08:19
вас там что-то а-ля типа ютьюба
00:08:23
вы программу допустим ваше приложение вы
00:08:27
создали его универсальным один исходный
00:08:31
код
00:08:35
из него
00:08:36
устанавливают как бы в десятки тысяч
00:08:39
мест это приложение
00:08:42
сама вот эта идея один исходный код и 10
00:08:46
тысяч серверов разбросанные по миру куда
00:08:48
вы продали это приложение или где она
00:08:51
работает там у каждого приложения у
00:08:54
каждого из десяти тысяч есть своя папка
00:08:57
media куда свои вот эти локальные
00:08:59
пользователи которые пользуются тем
00:09:01
конкретным приложениям загружают свои
00:09:04
конкретный файл никакого отношения не
00:09:06
гитхаба не имеют вот-вот никакого вообще
00:09:09
просто
00:09:11
ну и кто-нибудь может туда закачать
00:09:15
файлик там в 10 терабайт и что в git его
00:09:18
с грузим
00:09:21
ну да фотки документов то есть вы там
00:09:24
какую-нибудь базу данных граждан
00:09:26
написали какой-то реестр да там где всю
00:09:29
информацию от у вас лежит исходный код
00:09:31
вашем хранилище исходного кода гид хоп
00:09:34
или еще где-то и описано логика это
00:09:37
работа этой программы
00:09:39
там есть папка media допустим куда
00:09:42
загружаются паспорта этих граждан
00:09:44
что туда должно попасть тому ваш одна
00:09:47
ваша программа работает в китае
00:09:50
2 там работает сша 3 в россии что должно
00:09:53
быть на гитхабе в вашей папке медиа что
00:09:57
там должно быть
00:09:59
полтора миллиарда сканов паспортов
00:10:02
китайцев так вот там разорвет в клочья
00:10:04
любой гид хоп от таких объемов
00:10:07
поэтому
00:10:09
еще нет насчет стать и когда можно
00:10:12
подискутировать
00:10:13
потому что все-таки это статические
00:10:15
файлы да и они идут как часть как часть
00:10:19
приложения
00:10:20
но они и так есть внутри при этом
00:10:23
дублирование будет ну ними папка media
00:10:25
точно и не место на ките
00:10:28
так
00:10:31
тычку я вам отправил
00:10:35
в общем есть такие кто не знает вообще
00:10:39
штука и т.д.
00:10:40
техническое задание
00:10:51
есть такая штука кстати
00:10:56
я по-моему ее упоминал software
00:10:59
development life сайкл цикл разработки
00:11:02
программного обеспечения
00:11:10
software on life
00:11:21
пошарив что там было про веселее
00:11:24
tz к итоговому к проекту да не то чтобы
00:11:29
тогава и но вот он
00:11:34
значит есть такая штука как
00:11:37
экран видно сделал сида software
00:11:41
development lifecycle
00:11:43
цикл разработки программного обеспечения
00:11:47
такая теоретические выкладки тут можно
00:11:50
почитать статейку ну в общем
00:11:56
там иногда 4 у него
00:12:00
раз два три 4 5 6 5 ну в общем там бьют
00:12:05
иногда побольше ну плюс минус вот из
00:12:08
таких шагов состоит то есть тогда
00:12:12
ну да рассказывал да вот точно
00:12:15
тогда напоминаю тут есть анализ
00:12:18
требований
00:12:20
требования всех надо проанализировать
00:12:22
что от вас хотят что заказчик от вас
00:12:26
хочет это там кита может домашний
00:12:30
проекте кида там ted project такие
00:12:33
игрушечные которые вы сами придумали
00:12:35
сами сделали и сами
00:12:38
их там запускаете эксплуатируете
00:12:41
пользуетесь вы там один всеми ролями
00:12:44
заняты ну если вы на галере у вас руках
00:12:48
весло вы там сидите на скамейке со
00:12:51
своими коллегами и
00:12:53
ритмичными движениями двигаете галеру
00:12:55
вперед то это настоящий производственный
00:12:58
конвейер
00:12:59
который зарабатывает деньги на
00:13:01
производстве программного обеспечения и
00:13:03
там
00:13:05
заказчики если все поставлено на поток
00:13:09
они
00:13:10
там очередь то есть вы делаете проект
00:13:14
сделали делаете второй проект 3 4 5 и
00:13:18
так далее ну то есть настоящий конвейер
00:13:20
там коммерческий отдел как у любой
00:13:22
компании занимается поиском клиентов там
00:13:25
продажный кем там все
00:13:27
продают
00:13:28
программисты это
00:13:30
пардон производственный цех те как люди
00:13:33
которые это делают эксплуатируют
00:13:35
дальнейшем вот когда это все
00:13:37
по-настоящему
00:13:39
то необходимо
00:13:43
с клиентом вообще договориться что мы
00:13:47
для него будем делать что он хочет и
00:13:52
по-разному собирают эти требования
00:13:54
разные методологии есть там чуток не
00:13:57
делают но в общем случае это техническое
00:14:01
задание на разработку программного
00:14:02
обеспечения или там
00:14:05
рфпл всю там всякие там у них
00:14:08
аббревиатур ки есть разные ну так или
00:14:10
иначе это свод требований что же хочет
00:14:14
заказчик
00:14:16
причем важно специальные люди
00:14:19
бизнес-аналитики называются которые
00:14:22
требования заказчика переводит на язык
00:14:26
понятный разработчику и
00:14:30
они
00:14:31
оценивают в разговоре с заказчиком
00:14:35
должны обладать в общем там
00:14:36
бизнес-аналитики причем такая
00:14:41
для войтивойти это но одна из таких
00:14:44
стартовых позиций да откуда твой кивайте
00:14:46
часто начинается то есть это
00:14:49
бизнес-аналитик либо тестировщик куда
00:14:51
вот бизнес-аналитик хотя странно бинтом
00:14:53
бизнес-аналитик в тестировщик сан общем
00:14:56
идут частенько в бизнес-аналитики так
00:14:59
сходу да но бизнес-аналитик он первый он
00:15:03
общается с клиентом он выслушивают от
00:15:06
нее требования и он должен знать что
00:15:09
прям сходу понимать что определенные
00:15:13
требования могут быть не реализуемое
00:15:14
сразу со старта просто их нельзя сделать
00:15:17
и может быть поговорить заказчиком прям
00:15:20
на месте и как-то
00:15:23
переформулировать там что-то по-другому
00:15:25
изложить смягчить их там в общем вот а
00:15:30
если они как заказ cooper its a lot хочу
00:15:33
чтобы там скорость света было
00:15:36
300 тысяч метров в секунду чтобы в нашем
00:15:39
приложении свет за
00:15:41
900 тысяч метров в секунду пробегал вот
00:15:44
хочу и все ну в этот момент как бы чтобы
00:15:47
потом не было мучительно ну покрайней
00:15:49
мере надо коммерческому отделу доложить
00:15:51
сказать вот есть такое требование и мы
00:15:54
его не выполним и пусть там ребята
00:15:56
которые отвечают за деньги за
00:15:58
последствия уже решают что с этим делать
00:16:00
да может
00:16:02
как это все таки схватить клиента потом
00:16:05
заплатив штрафные санкции
00:16:07
за то что не будет часть работать оно
00:16:10
важнее а может быть важнее отказаться от
00:16:14
клиентов на старте сказать что нет мы
00:16:17
делать не будем в общем
00:16:20
составляются требования в разном формате
00:16:23
бывают такие формальные
00:16:26
бывают юзер стори пишут там то есть как
00:16:29
тем
00:16:30
пользовательские истории вот для того
00:16:32
чтобы там сделать то-то пользователь
00:16:35
должен тра-та-та туда нажать там на
00:16:38
вашем это один вариант могут формально
00:16:42
сухо сводить втз ну в общем каких-то
00:16:45
таких есть набор принципов
00:16:49
котором там стараются следовать в общем
00:16:52
вообще творческая такая часть и
00:16:57
значит составляющая
00:17:00
все равно как показывает практика когда
00:17:03
доходит дело до реализации то тут забыли
00:17:06
то там забыли в общем такая
00:17:09
состязательная вещь всего не
00:17:11
предусмотреть и
00:17:12
оба you do опасное да потому что
00:17:16
в конечном итоге очень важно иметь между
00:17:21
клиентом и разработчикам нормальные
00:17:24
доверительные отношения
00:17:25
потому что вот этот т.д. она оба you do
00:17:29
опасное с одной стороны если ты
00:17:32
разработчик и
00:17:36
втз есть какие-то
00:17:39
очень такие мутные двоякие какие-то вещи
00:17:43
которые можно трактовать по-разному в
00:17:45
случае каких то проблем
00:17:48
случае каких то проблем на момент сдачи
00:17:51
заказчик может запросто носом на тыкать
00:17:54
в ттз и сказать вот а где а почему вот
00:17:58
тут написал
00:18:00
что реализуешь скорость света 900 тысяч
00:18:04
метров в секунду я тут померил у меня
00:18:06
там четко не дотягивает до 300 тысяч вот
00:18:09
ты ему начинаешь объяснять что вы
00:18:11
извините физические ограничения нашей
00:18:13
вселенной нет а где тут написано все и
00:18:17
можно упереться это в одну сторону с
00:18:20
другой стороны
00:18:23
исполнитель может точно также
00:18:28
натыкать заказ к этим
00:18:32
техническим заданием потому что
00:18:38
так уж получается так уж получается что
00:18:41
ну и это нормально что заказчик
00:18:44
когда
00:18:46
заказывает разработку кого-то фичи
00:18:48
программного обеспечения он скорее всего
00:18:51
не до конца понимает что он хочет что он
00:18:55
хочет или
00:18:59
но тип талона то типа того
00:19:04
значит заказчик то не до конца понимает
00:19:07
что он хочет и вот он какое то свое
00:19:10
стартовое состояние на момент вот хотела
00:19:13
гда своих положил как-то на бумагу
00:19:18
начинает это все реализовывали он
00:19:21
понимает что как бы каменный цветок у
00:19:24
данилы мастера не выходит
00:19:27
выходит что-то другое он начинает
00:19:31
разработчику ой-ой-ой-ой-ой-ой
00:19:33
поворачивали летящий паровоз руками на
00:19:36
ходу разворачивай вот и в этот момент
00:19:41
разработчик может достать вот эта цзы
00:19:43
сказать по позвольте а вот жеж вот что
00:19:47
швы тут мне тут заказывали шлюпку а
00:19:50
теперь оказывается по выходу нужен
00:19:52
космический корабль вот я ветошь
00:19:55
подписывался на на шлюпку поэтому абаю
00:19:58
да вот этот злобою до опасная и на самом
00:20:02
деле важно иметь доверительные отношения
00:20:04
с друг с другом и
00:20:08
именно чтобы избежать вот таких вещей
00:20:13
как тонул избежать не удается никогда
00:20:15
так вот чтобы не было никогда проблем ни
00:20:18
разу не встречал ни разу чтобы прям
00:20:20
гладко все все счастливы смеются жмут
00:20:25
друг друг руки на протяжении всего
00:20:27
проекта ни разу не видел вот ни разу не
00:20:30
когда всегда есть это вопросы вот и
00:20:33
поэтому чтобы как-то минимизировать вот
00:20:36
эти вот
00:20:38
последствия
00:20:39
придумали всякие гибкие методологии
00:20:42
управления проектами такие как джейл и
00:20:48
в которой входят скрам канбан
00:20:52
блин и прочее прочее прочее вот
00:20:56
значит вот скрам канбан там похожей
00:21:01
штуки немного этом но самый популярный
00:21:03
на и раз кран да они чистым
00:21:06
программистом стыд искрам
00:21:09
скрам
00:21:11
что из себя представляет давайте так
00:21:14
будем сделать будем делать будем платить
00:21:16
как бы
00:21:18
[музыка]
00:21:19
за разработчиков
00:21:22
большой сложный проект
00:21:24
будем бить на части и
00:21:28
горизонт планирования будет небольшой то
00:21:31
есть ну там по-разному там бывают на над
00:21:35
от недели вот этот спринт скрам овский
00:21:38
забег до такой цикл конечный цикл когда
00:21:42
что-то сделали остановились выдохнули
00:21:44
посмотрели что получилось вот этот цикл
00:21:48
бывает от
00:21:52
недели наверное но уже меньше совсем это
00:21:55
будет что то странная еда месяца так
00:22:00
2 не ли такое наверно самая
00:22:02
распространенная где-то посерединке то
00:22:05
есть о чем это говорит
00:22:07
нам нужно сделать какой-то программного
00:22:09
монстра гиганта мы в целом представляем
00:22:13
я как разработчик я представляю что
00:22:17
много где то есть я как заказчики в
00:22:19
целом представляешь что мне нужна такая
00:22:21
как это классная система которая будет
00:22:23
там принимать заказы что-то график
00:22:27
нарисует и всем все будет хорошо на этом
00:22:29
как бы мои
00:22:31
в моменте познания заканчивается ну
00:22:34
хорошо значит ну
00:22:37
понимание текущей ситуации на неделю
00:22:40
вперед достаточно
00:22:42
нарезаем задачи небольшие на недельку
00:22:46
кусочками раздаём разработчикам на
00:22:48
неделю ушли разработчики делают через
00:22:51
неделю возвращаются показывают
00:22:55
заказчик но это классно получается а вот
00:22:58
тут не классного тут не классно
00:23:01
давайте подвернем чуть-чуть давайте тут
00:23:04
немножко изменим вот и будем делать по
00:23:08
другому и как бы вот пока изменения еще
00:23:11
в небольшие вот когда еще ну то есть
00:23:15
поезд уже не километр несется по
00:23:18
неправильному пути а просто вот еще на
00:23:21
пару миллиметров до проехал эту стрелку
00:23:24
развилку не в том направлении мы давайте
00:23:26
его назад чуть как не мы все таки на
00:23:28
нужную стрелочку переставим вот это чем
00:23:31
можно сделать и все значит на следующей
00:23:35
неделе опять там на выдавали заданием с
00:23:37
учетом переделки вот этой кусочка
00:23:39
который не понравился и так такими
00:23:41
короткими забегами доходим до конца
00:23:44
нашего проекта и
00:23:47
в этих гибких металл от методологии что
00:23:50
может получаться что на старте
00:23:54
заказывали
00:23:56
космический корабль до сделали телегу и
00:23:59
все довольны все довольны потому что в
00:24:03
процессе вот этого патруль его или
00:24:05
патруль его ли подруливания оказалось
00:24:07
что ну не нужен нам этот космический
00:24:09
корабль телеги достаточно
00:24:11
и дешево и все как бы и мешки сахара
00:24:14
загрузили и там заданный километр
00:24:17
проехали задачка выполнена овнам в
00:24:20
начале казалось нужен космический
00:24:22
корабль вот
00:24:23
но есть минусы как и то есть я вам
00:24:27
рассказывал новыми стать эти про и
00:24:30
сделки про методологии разработки в них
00:24:33
придется жить те кто будет работать
00:24:34
скорее всего будете работать по
00:24:37
какому-нибудь скрам у мод на другом
00:24:40
полюсе стоят
00:24:43
water фоне водопада и до методологии
00:24:46
когда
00:24:47
на старте
00:24:50
проект планируется до самого конца прямо
00:24:53
до самого конца все этапы вот
00:24:57
чертят зависимости кто то есть допустим
00:25:00
там что сначало сабираем требования две
00:25:04
недели собираем как собрали через две
00:25:06
недели стартуют задача
00:25:08
планирование длится неделю неделю
00:25:11
планируем планируем планируем за неделю
00:25:14
запланировали вот и
00:25:17
потом еще что начинаем архитектурный
00:25:20
дизайн и если задачки одну под другой
00:25:23
записать и на
00:25:27
нужно показать
00:25:30
уокер
00:25:33
модель какой-нибудь вот здесь картинка
00:25:38
если взять картинки
00:25:42
вот вот так вот они выглядят
00:25:46
поэтому их называют водопадный моделью
00:25:49
то что задачки четко вначале проекта
00:25:53
выписывают что нужно сделать нужно
00:25:57
разработать там собрать требования
00:25:59
работает дизайн запланировать
00:26:02
реализовать протестировать эти задачки
00:26:05
выписывают и вот эта стрелочка
00:26:07
показывает кто за кем идет вот и
00:26:09
называется эта штука водопад
00:26:13
по водопадная модель и по этой по
00:26:16
waterfall у наши деды в космос полетели
00:26:19
всякие
00:26:20
турбины плотины самолеты гэс и
00:26:25
космические корабли их все строили там
00:26:29
по вот этой water вольной модели
00:26:32
она считается такой классической
00:26:35
из недостатков этого waterfall а что
00:26:41
[музыка]
00:26:43
для больших проектов сначала можно во
00:26:47
первых скорее всего ты все не
00:26:49
предусмотришь
00:26:51
все не предусмотришь но если ты там
00:26:53
строишь какой-нибудь гидроэлектростанцию
00:26:56
то наверно все таки
00:26:58
водопадная модель
00:27:01
она отлично подходит потому что там
00:27:04
сразу понятно что будет на выходе
00:27:09
там нет места давайте турбину не вдоль
00:27:12
поставим а поперек да или там тут или
00:27:14
давайте их через одну турбины ставить
00:27:17
большую маленькую потому что ну вот чё
00:27:19
так вот решили посередине нет тут
00:27:21
наверно важно запланировать и
00:27:22
реализовать но в программном обеспечении
00:27:25
такая вещь плохо работает когда ты все
00:27:29
это запланировал график нарисовали
00:27:32
словно говоря там
00:27:34
77 там тире 10 шагов или сколько
00:27:38
подписали план производства работ или
00:27:42
как там называется там написано что идет
00:27:46
дизайн 7 месяцев и
00:27:48
разработчик ушел и семь месяцев вы его
00:27:51
не видите
00:27:53
вы ему там там вас но как он там
00:27:56
отстанет договор видел вот у меня семь
00:27:59
месяцев есть
00:28:00
планирование дизайн увидимся через семь
00:28:03
месяцев и через семь месяцев он приходит
00:28:06
с дизайном клан такой вот вы
00:28:10
выигрыш не то это не туда а мне не так
00:28:13
надо он только ну все тогда вносим
00:28:16
изменения в договор продлеваем сроки и
00:28:19
весь этот водопад продлевается
00:28:22
вот еще на семь месяцев мне мяч цикл
00:28:24
разработки 7 месяцев а ты мне сейчас
00:28:27
правки внесёшь я ушел буду 7 месяцев 5
00:28:30
проектировать и закачкой думаю того у
00:28:34
них там надо седьмому ноября эту штуку
00:28:37
запускать вот как же как жеж а тут вон
00:28:41
уже раз она 7 месяцев подвинулась
00:28:43
поэтому обычно для таких вот для
00:28:46
программного обеспечения не используют
00:28:48
этот water for ный
00:28:50
прием хотя вру использует если будете
00:28:54
разрабатывать софт под какую нибудь для
00:28:58
какой-нибудь госорганизации
00:29:00
то там на в этот waterfall нарваться это
00:29:03
гадалке не ходи потому что water полная
00:29:07
модель она очень хорошо ложится
00:29:10
на все эти виды big бюрократии
00:29:14
государственных регулирований когда
00:29:18
любая комиссия приходит и так вы куда
00:29:21
эти деньги деле rain достаете контракт
00:29:23
где всё написано
00:29:25
что вот вы тендер провели что а через
00:29:29
полтора года будет ваты то что вы
00:29:31
заплатите вот это если не будет будет
00:29:33
штраф всем все понятно вот а когда там
00:29:36
написано что мы тут какими-то прыжками
00:29:38
по две недели и неизвестно что будет в
00:29:41
конце то есть мы тратили тратили тратили
00:29:43
деньги вот всем объявили что нам нужен
00:29:46
космический корабль потратили деньги
00:29:48
получилось телега вот всяким
00:29:50
государственным компаниям такие
00:29:52
результаты непонятны поэтому они
00:29:55
частенько
00:29:56
всяких аджай love у них волосы дыбом
00:29:59
встают он просто как это как это как как
00:30:02
вы на старте не знаете что вы хотите што
00:30:06
за что за спринт и его на расписали
00:30:08
планчик составили
00:30:11
со всех подписей собрали все попробуйте
00:30:14
только не сделай вот хоть там на голове
00:30:16
стой но все это решили поэтому всякий
00:30:19
вот
00:30:21
госорганизации там в общем где
00:30:23
бюрократия где важнее вот это вот там
00:30:26
прямо
00:30:27
отчетность там там любят этот waterfall
00:30:31
потому что на конкурс вышел сразу всем
00:30:36
все рассказал что ты хочешь когда ты
00:30:38
тебе все сказали заскок они это сделают
00:30:41
все понятно все прозрачно все разошлись
00:30:44
по норам одни пошли делать вторые пошли
00:30:48
ждать встретились через полтора года
00:30:50
удивились вот и пошли в суд такое тоже
00:30:54
бывает ладно
00:30:55
лирическое отступление на кончено все
00:30:58
таки
00:30:59
чего-нибудь надо с джанкой поделать
00:31:02
правильно
00:31:05
сегодня поработаем с
00:31:09
моделью
00:31:11
моделью хочу сказать следующее что у
00:31:16
меня будет там джанга мая на которые я
00:31:18
буду все показывать там будет значит
00:31:21
смесь всего по чуть-чуть там будет
00:31:24
того-сего в общем я не буду делать
00:31:27
вместе с вами проект
00:31:29
поэтому специально я вам буду показывать
00:31:32
подходы и принципы а вот уже конкретную
00:31:35
реализацию проекта вы будете делать не
00:31:37
по видео со мной просто как это набирать
00:31:40
с экрана до а
00:31:42
все-таки надо будет это все адаптировать
00:31:45
поэтому у меня будет такой этот в общем
00:31:48
странная поделка
00:31:49
который может быть даже и не будет
00:31:51
работать
00:31:53
любая штука любая штука
00:31:58
начинается с документацией причем джанви
00:32:01
хорошая документация
00:32:03
ганга минска единственное у неё поиск
00:32:07
плохой а так а
00:32:10
так так нет а
00:32:16
она
00:32:18
ганга а вот в принципе
00:32:24
крайне рекомендую крайне рекомендую
00:32:28
изначально искать информацию
00:32:31
на сайте джанга потому что особенно если
00:32:37
искать на русском языке
00:32:39
вот то там начинает сыпать на кита сайт
00:32:43
и там какие то там ну в общем с
00:32:46
непонятным результатом источник правда
00:32:48
он здесь
00:32:50
вот
00:32:53
отсюда все начинается надо вычитать
00:32:56
просто до посинения сначала эту
00:32:59
документацию и только после этого может
00:33:02
уже там куда-то
00:33:04
смотреть так
00:33:07
[музыка]
00:33:09
модель подойдет для нам вот эта статейка
00:33:15
tutorial знать посмотрим что тут есть на
00:33:18
to be set up crackin' modules ну
00:33:22
наверное вот вот это нужно
00:33:25
это bass сетап ну хотелось бы коснуться
00:33:28
у нас все это установлено
00:33:31
раздел с этим кассах видели
00:33:35
посвященный базам данных принципе может
00:33:39
работать даже с несколькими
00:33:40
одновременным по умолчанию
00:33:43
с коробки идет база данных из clearlight
00:33:47
это
00:33:48
реляционная база данных вполне себе
00:33:51
ничего
00:33:53
единственное что у нее нет ролевой
00:33:55
модели ну она просто я очень нельзя в
00:33:58
ней на уровне базы данных нельзя
00:34:02
разграничить пользователей если пост
00:34:05
грех или москве умеет троллей нарезать
00:34:08
само по себе выдать каждому по логину и
00:34:11
паролю и по вот этому логину и паролю
00:34:13
ограничить то что вы с этой базой делать
00:34:16
можете то есть крыл light так так делать
00:34:19
не не умеет у нее нет ролевой модели у
00:34:21
нее это просто файл файл если будешь
00:34:25
туда в правильном формате писать то все
00:34:27
и читать оттуда
00:34:29
то все случится это из недостатков
00:34:35
то что нет ролевой модели то есть
00:34:37
ролевая модель должна реализовываться
00:34:40
кем-то сверху приложение которое будет
00:34:43
ограничивать
00:34:45
ну и лежит это все файлики рядом там в
00:34:50
корне проекта по умолчанию лежит файлик
00:34:52
вот с таким именем
00:34:54
от не текстовый файл там в бинарном виде
00:34:57
записанные данные но есть программки
00:35:00
которые можно этот файлик с помощью этой
00:35:03
программы открытие увидите вот эти
00:35:05
таблички в общем ничего сложного там
00:35:08
ничего не зашифровано просто в
00:35:11
специальном формате это лежит есть
00:35:13
программы которые вычитывают и вот с
00:35:15
этим и скверной там
00:35:17
позволяют работать
00:35:20
ну еще из недостатков конечно раз ты
00:35:22
простой файл то там бешеная вот это
00:35:26
производительности там тоже нет поэтому
00:35:29
так для всяких встроенных устроить для
00:35:31
небольших проектов более чем достаточно
00:35:33
для учебного тоже
00:35:35
ну и по функционалу тоже не сказать что
00:35:39
там прям всего много но все основное там
00:35:42
есть все что надо там есть так будет ли
00:35:45
тут примерчик для
00:35:47
не будет ну и ладно значит
00:35:53
то есть database mail agent слона на
00:35:58
глянуть
00:36:02
так пока нет все это нам не надо
00:36:07
вот дата без биндинг ну вот как бы с чем
00:36:12
умеем работать по умолчанию вот
00:36:16
интересно мария мария де б тоже самое ну
00:36:19
вот паз грета пустим возьмем так со мной
00:36:24
под игре прошли
00:36:27
этот пример кода то не приведут
00:36:31
очень найдем
00:36:33
так 3 форту
00:36:37
в пример настройки для
00:36:41
счета я мне она не очень нравится об
00:36:45
шанс
00:36:55
поменяли чем
00:36:58
об шанс мою
00:37:02
да тут что-то connection to connect
00:37:06
using service name from connection и
00:37:08
passwords from паспорта
00:37:12
мой сервис
00:37:17
ну в общем
00:37:19
ладно
00:37:21
движок указывают
00:37:24
пост гре и
00:37:28
вот это что-то новенькое раньше писали
00:37:31
прямо вот здесь вот эти данные в общем
00:37:33
что нужно чтобы под конектится к базе
00:37:35
данных как то с нами даже таком виде ещё
00:37:38
не пробовал
00:37:40
ну ничего сложного тут не вижу
00:37:44
если эта база данных типа пост греет а
00:37:47
сервер которая работает где-то в стороне
00:37:51
и ждет подключения к себе чтобы
00:37:54
соединиться с такой базой данных во
00:37:56
первых она не будет рядом и уже точно
00:37:58
она в git не попадет потому что она
00:38:00
просто работает где-то по сети доступны
00:38:03
вот эти опции
00:38:06
на самом деле указывают откуда эти
00:38:09
данные взять вот этот файлик
00:38:12
какие разделы оттуда идут ну и что важно
00:38:17
во-первых хост это адрес куда конектится
00:38:22
в данном случае локалхост обозначает что
00:38:25
база под гре работает на том же на той
00:38:28
же машине что и ваша django то есть зло
00:38:30
колхоз аналитика себе под каким юзерам
00:38:35
конектится к
00:38:37
какой базе
00:38:39
connected самый порт вот этот дефолта
00:38:42
вый порт по умолчанию то есть завода
00:38:44
такой идет но могут изменить в общем вот
00:38:47
эта штука говорит о том что теоретически
00:38:50
база данных может находиться за океаном
00:38:53
и вы по интернету можете подключаться
00:38:56
зная логин зная пароль который вот здесь
00:39:00
вот указан отдельно вот можете к ней
00:39:04
подключиться но на все проще у нас в
00:39:06
файле
00:39:07
так идем назад дтп сетап
00:39:16
я уже упоминал о том что
00:39:20
django имеет свой встроенный
00:39:24
о р м
00:39:26
объект relation ship relation ship
00:39:30
relation matter то есть это программная
00:39:34
прослойка между
00:39:35
базой данных и вашим приложением которое
00:39:38
позволяет оперировать
00:39:40
описывать и работать с таблицами в базе
00:39:43
данных описывать их классами
00:39:48
атрибутами этого класса будут колонки в
00:39:52
таблице
00:39:53
объектами этого класса будут конкретные
00:39:56
записи вот django имеет свою встроенную
00:39:58
такую штуку ну и вот тут вот пошли
00:40:02
примеры как это делать так что смотрим
00:40:05
где он мне там омега приложение
00:40:08
который будет ни на что не похоже
00:40:11
вот она вот здесь я делал хеллоу ворлд
00:40:15
вот у меня здесь есть как раз
00:40:16
предложения со запушил все
00:40:30
так
00:40:32
это у меня все лежит
00:40:36
надо открыть файл open folder
00:40:41
и
00:40:43
открытие прямо там так это было до the
00:40:47
bass по моему нет
00:40:51
донга
00:40:53
django тест тату открывая
00:41:00
удобнее
00:41:06
.
00:41:08
кстати должна подхватить и виртуальное
00:41:11
окружение автоматом если открыть
00:41:12
какой-нибудь питоновский скрипт и
00:41:18
папа не получилось ладно
00:41:25
ну iron and ben активы
00:41:38
было в его сердце без сердце
00:41:56
начинаю
00:41:58
там нет занимал порты
00:42:05
по имени с
00:42:13
принц
00:42:24
да все при
00:42:28
итак
00:42:30
django нам диктует определенную
00:42:33
структуру как я говорил
00:42:35
вот у меня
00:42:38
папка
00:42:40
видео работает что работает видео
00:42:48
кран зависят
00:42:55
от из
00:42:59
вот значит вот я прошлый раз создал
00:43:02
приложение назвала выехала уолт и
00:43:06
есть модуль с настройками у меня во всех
00:43:09
проектах он называется про джи именно
00:43:11
вот эти вот первые телодвижения с
00:43:13
переименованием папок для того чтобы у
00:43:16
меня будут разные здесь приложение
00:43:19
возникать и всегда настройки будут в
00:43:21
модуле прочь django по умолчанию создает
00:43:25
модуль
00:43:26
называет его models и вот даже оставляет
00:43:29
вам комментарий
00:43:34
где нужно описывать ваши модели то есть
00:43:38
а то есть моделировать данные которые
00:43:41
будут у вас в системе хранится
00:43:43
ну что там будут заданы самое простое
00:43:46
есть такая штука как в системах
00:43:48
справочники это набор каких-то
00:43:52
значений
00:43:54
списочный которые там-сям используются
00:43:57
пример справочников валюты
00:44:01
дартом рубль и евро вот просто где-то
00:44:05
надо хранить список этих валют
00:44:07
чтобы
00:44:09
[музыка]
00:44:11
чтобы например в заказе выбирать валюту
00:44:16
сумма заказа наводите число и потом
00:44:18
списочек такой нажимаете выпадает
00:44:21
списочек из валют вот этот список валюты
00:44:23
это справочник то есть это фиксированный
00:44:25
список каких-то значений города там
00:44:28
всякие там размерности там
00:44:32
размерности весов размерности там
00:44:35
расстояние там ну в общем всякие
00:44:37
фиксированные наборы данных
00:44:39
штука тонн а там но если для заказа до
00:44:43
там в чем единицы измерения тоже могут
00:44:45
быть справочниками вот такой нами самая
00:44:48
простая штука допустим
00:44:50
ну
00:44:53
чтобы чтобы такое сделать им справочник
00:44:57
сделаем с городами
00:44:59
варум жешь и и и них
00:45:05
нужен ли этот справочник в магазине
00:45:08
ну наверно нужен там если там доставка
00:45:12
хотя электронные книги
00:45:15
город не нужен еще лучше в голове у меня
00:45:19
есть понятие что города
00:45:22
хранятся в виде таблички
00:45:26
название города как минимум обязательное
00:45:30
поле и
00:45:33
[музыка]
00:45:34
для начала хватит но можно еще
00:45:37
какой-нибудь описания
00:45:38
поэтому
00:45:40
табличку мы проектируем который появится
00:45:43
с помощью
00:45:45
класса допишем класс
00:45:48
класс даем имя таблички
00:45:54
моем случае это был чеки сити и
00:46:01
сверимся с документацией что
00:46:03
[музыка]
00:46:06
да причем правилам хорошего тона
00:46:09
является
00:46:12
именовать объекты которые будут в
00:46:15
таблице белизна числе то есть некое
00:46:18
since
00:46:19
клуба именно кочан потому что из нее
00:46:21
потом получается объекты вот ну вот
00:46:25
правила хорошего тона ну и напоминаю что
00:46:28
этот паскаль кейс и тут главное чтобы
00:46:31
класс был не просто классом а все-таки
00:46:33
стал интерфейсом к таблице у
00:46:36
наследоваться от правильного родителя
00:46:39
поэтому нам django уже заготовил а здесь
00:46:42
моделс
00:46:44
это
00:46:46
модуль наверно и в нем есть класс модель
00:46:54
ок только я тьме унаследовал ся
00:46:57
случилось магния потому что вот здесь
00:47:00
там уже что-то очень много
00:47:01
запрограммирована такого я так
00:47:04
предполагаю но оно так и есть да
00:47:06
какой-то фон я одна унаследовал ся от
00:47:09
модели все у меня встроенный функционал
00:47:12
дальше я
00:47:15
планирую
00:47:16
ну или описываю колонки в моей таблице
00:47:22
для городов не нужен нейм драгун имя
00:47:27
города name
00:47:28
нейм равно
00:47:32
пакету забыл как по моему
00:47:35
давно руки шашки не брал на они от помня
00:47:40
два пробела с двух сторон двух сторон
00:47:47
и дальше специальным образом нужно
00:47:50
описать тип колонки то есть какого типа
00:47:54
там будут храниться данные так как для
00:47:59
реляционной базы данных это очень важно
00:48:01
да там у колонки есть тип и
00:48:06
подписывается тоже специальным образом с
00:48:08
того же пакета и он тут уже подсказывает
00:48:11
что у него есть на этом по памяти мне
00:48:13
нужен там чарра
00:48:15
or fill около и поля и
00:48:19
дальше идут всякие служебные штуки
00:48:23
вот
00:48:25
здесь подсказывает
00:48:28
[музыка]
00:48:30
не все здесь нужно не все здесь много
00:48:33
всяких
00:48:35
необязательных параметров но вот дербас
00:48:38
ней частенько как это предпочитаю писать
00:48:42
это такое человека
00:48:46
понятное название
00:48:48
этого поля то есть ганга автоматически в
00:48:51
той же админке подписывает это будет
00:48:54
поля и
00:48:55
[музыка]
00:48:56
мышкой навести на слово
00:49:00
сам api вот если установлен плагин че
00:49:04
кто
00:49:06
пишет сама
00:49:08
значит пишем си и
00:49:12
city
00:49:15
там сити
00:49:18
это был ладно я не британская королева
00:49:21
если
00:49:22
ошибусь мне просто так
00:49:29
и на города то есть это будет человека
00:49:32
понятное описание этого поля
00:49:35
дальше для таких полей если все
00:49:40
правильно
00:49:41
помню обязательно является вот эта штука
00:49:46
то есть ограничения по количеству
00:49:48
символов
00:49:50
макс
00:49:53
и
00:49:55
интеджер вот я вижу что она хочет от
00:49:58
меня здесь интеджер ну сколько я не знаю
00:50:01
там отведем
00:50:03
25 символов
00:50:06
так что еще тут может понадобиться
00:50:12
unic unic
00:50:19
нужно ли нам здесь уникальное поле нет
00:50:22
наверно не нужно потому что
00:50:24
потому что наверное
00:50:27
как минимум знаю париж который в париже
00:50:30
и париж который в читы в челябинской
00:50:33
области
00:50:34
российской федерации там же еще в город
00:50:37
варна знаю
00:50:38
челябинской области так что
00:50:41
оставим там пока
00:50:45
вот да есть вот деревня париж так что не
00:50:48
будем ставить уникальный ну в общем то
00:50:51
все поле имя описано то есть колонка да
00:50:56
я все еще раз у меня в руках класс то я
00:50:59
продолжаю описывать
00:51:01
таблицу табличку ну
00:51:06
наверное полезной будет
00:51:10
добавить хотя абсолютно не обязательно
00:51:13
так как сейчас все из головы придумывают
00:51:15
просто показать как это работает
00:51:18
dice
00:51:20
rip и
00:51:21
он
00:51:23
колонка под названием дискрипшн описание
00:51:26
и тут использую похоже но
00:51:31
модель
00:51:34
модема с
00:51:38
текст текст fell текстовое поле
00:51:42
текстовое поле штука
00:51:52
у к похоже экстра поля и dance твина нет
00:51:58
нет обязательно длины то есть оно
00:52:02
предназначено это поле для хранения
00:52:03
больших объемов текста ну вот дискрипшн
00:52:06
допустим там если это минск то в теории
00:52:09
можно туда всю историю до запихать
00:52:11
минска при желании так что то еще тут
00:52:15
надо
00:52:16
с иной дух подсказка нет нет
00:52:22
вот есть еще два вот два важных поля
00:52:27
бланк
00:52:29
бланк
00:52:33
true
00:52:36
их и
00:52:38
но
00:52:44
true
00:52:49
эти поля
00:52:51
сообщают баре данных о р м 0 в конечном
00:52:55
счете код города код города в чем
00:53:00
код города на автомобильном номере этого
00:53:03
одно индекс ну индекс можно но
00:53:08
можно это дело художника нужен тут
00:53:11
яндекс или нет значит вот эти два поля о
00:53:13
чем говорят в общем они
00:53:16
каждый по-своему описывает
00:53:19
может ли это поле оставаться пустым
00:53:23
незаполненным
00:53:25
по умолчанию там тут стоит фолз и тут
00:53:28
фолз вот я здесь ничего не написал это
00:53:31
означает что
00:53:33
где-то здесь
00:53:36
ник это
00:53:39
было с
00:53:41
не вижу так null
00:53:45
бульон не
00:53:46
пишут
00:53:49
бланк
00:53:50
бульон и дефолтное значение не написали
00:53:54
ну ладно в общем по умолчанию эти штуки
00:53:56
стоят фолз то есть раз я вот здесь
00:53:58
ничего не написал про бланк и null это
00:54:02
поле обязательно
00:54:03
я не могу оставить его пустым здесь я их
00:54:07
бланк и ну поставил true значит
00:54:10
дискрипшн поле становится не обязательно
00:54:13
база данных под него как бы местечко
00:54:15
будет держать но позволяет
00:54:18
держать в этой ячейке пустоту почему
00:54:21
поле 2 вот это бланк
00:54:23
но относится к базе данного них базе
00:54:27
данных django django как приложение у
00:54:31
нее есть проверки до того как данные
00:54:34
полетят в базу данных вот например там
00:54:37
проверка форм который пользователь
00:54:39
отправляет вот это для джанки вот эта
00:54:42
штука для базы данных то есть вот это
00:54:44
будет стоять прям в базе данных и
00:54:50
могут может быть разночтение да допустим
00:54:53
когда бланк falls
00:54:56
то есть это будет означать что если уж
00:54:59
вы пользователю показываете формочку где
00:55:02
он будет вводить данный ту пользователь
00:55:04
обязан довести вот description ну как то
00:55:07
так вот если это поле заполняется
00:55:11
каким-то кодом то есть не пользователь
00:55:13
то база данных будет не против таком
00:55:16
случае если все-таки это поле будет не
00:55:18
заполнено ну короче вот эта штука для
00:55:20
джанки для внутренних проверок джонги а
00:55:23
эта штука прям
00:55:25
как это будет в базе данных
00:55:33
ну да бланк пустой говорит для ждан для
00:55:39
дженги что когда будет django когда
00:55:42
будешь проверять пользовательские данные
00:55:43
которые он тебе прислал для отсылки в
00:55:46
базу данных можешь это поле не проверять
00:55:49
на пустоту
00:55:50
2 значит поле какой тип установить уже
00:55:54
конкретно для колонки в базе данных то
00:55:57
есть может так случиться что вот эта
00:55:59
штука вам пропустит пустое поле а база
00:56:01
данных скажет и нет
00:56:04
вот но в нормальном состоянии должно
00:56:08
быть конечно в большинстве случаев они
00:56:11
совпадают
00:56:12
так ну и
00:56:13
[музыка]
00:56:15
ладно пока на этом остановимся и помнит
00:56:19
вот
00:56:21
что дальше вот я закончил описание той
00:56:25
все моя прекрасная
00:56:27
таблица как я вижу готова что дальше
00:56:32
что винит
00:56:38
заполняет записями ну вот скажите вот я
00:56:43
разрабатываю свое приложение
00:56:46
вот я классом описал некую табличку в
00:56:50
базе данных а база данных работает в
00:56:52
калифорнии щас работает сервер
00:56:55
на сервере железном греет воздух вот он
00:56:59
там вот он работает и что а я здесь сижу
00:57:02
написал вот этот класс а вот той базе
00:57:06
которая там вот сейчас в калифорнии на
00:57:09
нужно выполнить миграции
00:57:13
потому что миграции это как раз те
00:57:16
команды которые берут вот все что здесь
00:57:18
написано переводят в вас qu'elle команды
00:57:21
и отправляют в базу данных приводят в
00:57:25
соответствие то что написано в модели с
00:57:27
тем что есть в базе данных
00:57:30
так
00:57:31
сервер мне для этого не нужен пока его
00:57:34
controls и остановлю
00:57:36
белую миграция первое мейк мигрейшн
00:57:41
make мейк
00:57:45
киона с майк мигрейшн вот что я получил
00:57:50
в ответ что
00:57:52
ванга пробежалась по всем
00:57:54
зарегистрированным приложением
00:57:57
заглянула во все файлы моделей
00:58:00
посмотрела что там написано и сравнила с
00:58:03
тем что есть в базе данных по различиям
00:58:07
по несоответствием создала файлы
00:58:09
миграции вот makemigrations сделать
00:58:11
миграции вот она и сделала вот теперь
00:58:14
вот эта миграция появилось первое вот
00:58:16
здесь я здесь до этого не было здесь
00:58:19
собственно на языке python как бы
00:58:22
написано что надо делать да вот список
00:58:24
операции это операции это список вот и
00:58:29
написано что нужно сделать создать
00:58:31
модель то есть по сути табличку с
00:58:33
таким-то именем есть такими вот полями
00:58:36
тут важно заметить что django никого не
00:58:40
спрашивая
00:58:41
автоматом добавляет поле
00:58:46
ну да автоматом поля иди вот эти поля я
00:58:49
описал она это это мое творчество вот
00:58:53
это создали за меня
00:58:57
поле под названием айди
00:59:01
back of the field то есть это интеджер
00:59:04
большой размерности с авто инкрементом
00:59:08
то есть она автоматически прирастает
00:59:11
каждый раз но и автоматически создано до
00:59:13
прайма реки первичный ключ то есть это
00:59:17
поле будет однозначно отличать одну
00:59:20
строчку от другой то есть если я даже
00:59:22
там сто тысяч минсков в виду все будет
00:59:26
нормально тем не менее каждая строчка
00:59:28
будет отличаться как минимум под этой
00:59:31
лиге
00:59:32
ну и арбуз name едим вот вот эта штука
00:59:36
она
00:59:38
здесь создала то есть это операции
00:59:41
которые надо выполнить дальше я говорю
00:59:44
команду my great
00:59:48
ответственно взять вот этот вот вот эти
00:59:51
операции которые заготовлены и выполнить
00:59:54
my great не те ми great
01:00:00
great вот применяю hello world 001 и не
01:00:06
шил все окей вот после этого команды в
01:00:10
соответствии с тем интерфейсом которые
01:00:12
написаны в settings ах то есть как бы
01:00:14
что там у нас за база данных вот они
01:00:17
отправились в в эту базу данных видеть
01:00:20
череды сколько month вот и сейчас базе
01:00:22
данных создалась табличка и все это с
01:00:26
помощью джунгарского время было сделано
01:00:28
что избавило меня от необходимости
01:00:30
посылать туда команды эскель иначе мне
01:00:34
бы там надо было там
01:00:36
текстовую строку там как-то там криэйтор
01:00:39
был перечислять ну похоже но
01:00:42
еще плюс есть какие-то различия для
01:00:45
разных баз данных то в моем случае если
01:00:47
пацану сюда другую базу данных вот эта
01:00:49
штука почти сто процентов останется
01:00:53
такая же есть
01:00:55
небольшие отличия там для между базами
01:00:58
данных но для таких простых вещей вообще
01:01:01
ничего не изменится ты сейчас сюда
01:01:03
москве ль подсунул базу данных и вот вот
01:01:06
этот класс он какой был такой останется
01:01:07
и так у меня теперь есть табличка
01:01:11
моей базе данных вот здесь вас кейт она
01:01:14
конечно не откроется вот
01:01:17
но она там появилось все с ней можно
01:01:20
работать
01:01:21
значит и
01:01:25
так давайте запустим сервер
01:01:29
назад
01:01:35
а
01:01:36
сервер работает в принципе теперь кстати
01:01:40
есть такой модуль здесь
01:01:42
админка админ вот вот здесь нужно
01:01:46
регистрировать свои модели
01:01:48
административном сайте если вы хотите
01:01:51
чтобы они там были
01:01:53
так часто к я вспомню как это делается с
01:01:57
наскока пока
01:02:00
насколько пока не заглядывая в
01:02:02
документацию так сейчас все таки не
01:02:05
боинг у меня по драками на высоте 10000
01:02:07
не упадет если здесь ошибок ошибаюсь
01:02:09
поэтому попробуй сам но во первых мне
01:02:12
эта модель здесь нужно вот чтобы
01:02:15
зарегистрировать вот этот тащи сюда была
01:02:18
перед глазами
01:02:20
от эта модель чтобы она появилась в
01:02:23
админ скам сайте первых в этот сам класс
01:02:26
он мне здесь нужен поэтому я и сюда
01:02:28
импортирую вот эти вот модели
01:02:30
рома .
01:02:33
из текущего приложения импорт
01:02:37
импорт модель
01:02:40
те модели сюда притягиваю ну то есть
01:02:42
даже не все модели а именно пространство
01:02:45
имен и теперь так вот здесь уже
01:02:50
заготовка имеется где все самое
01:02:52
интересное джанга мне это оставило
01:02:55
админ
01:02:59
всегда путаю либо сайт либо сайт
01:03:04
по моему все таки сайт и
01:03:08
экстра не сюда закидываю этот класс
01:03:12
моделс
01:03:15
mobilz
01:03:18
hi-tech принц
01:03:21
я думаю что я все сделал правильно вот
01:03:23
единственный вариант где тут вот вот так
01:03:26
вот еще может быть но попробуем с этим
01:03:31
так по моему я пользователи создавал
01:03:34
поэтому
01:03:35
иду сюда 127 00 18
01:03:39
тысяч и
01:03:42
админ
01:03:45
моему так
01:03:48
дальше
01:03:50
админ мой мега секретный пароль
01:04:00
да и видим вот появилась во первых мое
01:04:04
приложение здесь
01:04:06
потому что иначе вы должны дранга явно
01:04:10
сказать что вы хотите чтобы в админке
01:04:12
появилась
01:04:13
убирается на эту штуку
01:04:16
сервер перри запустился вычитал обновляю
01:04:19
админку и
01:04:23
табличка пропала то есть я должен явно
01:04:27
приложению сказать какую из табличек я
01:04:31
хочу видеть от минском сайте можете не
01:04:34
все хочу видеть
01:04:35
поэтому автоматом там не прорастает надо
01:04:38
явно указывать
01:04:42
вернул обновляю вот моя табличка cities
01:04:45
и если сюда кликнуть то ничего нет можно
01:04:49
завести видите
01:04:52
во первых вот оно это сити name и
01:04:55
тут продублировать вот сейчас и поправим
01:04:59
значит
01:05:01
cities description пишем
01:05:05
из
01:05:06
rip и он вообще по-хорошему после после
01:05:12
любого изменения после любого изменения
01:05:14
в моделях нужно делать миграцию причем
01:05:18
лучше эти изменения не накапливать под
01:05:21
каждое малюсенькое изменение делать
01:05:24
миграцию иначе
01:05:26
общем
01:05:27
это миграция на штука капризная она
01:05:31
зависит от последовательности и об
01:05:34
логики и trouble шутит не так просто
01:05:37
иной раз или легче базу данных снести
01:05:40
вообще начисто чем поправить это дело
01:05:43
поэтому
01:05:44
за rule of солдат как бы
01:05:48
золотое правило первых делает думать
01:05:51
заранее то есть если у вас есть
01:05:55
сейчас нарисую
01:05:58
чуть ведь помните у нас реляционная база
01:06:02
данных и у нее есть табличек взаимосвязи
01:06:05
то есть одна табличка относится к другой
01:06:07
ну допустим если у нас есть табличка
01:06:12
там студенты
01:06:14
вот и есть поле группа этого студента
01:06:18
есть табличка групп и групп
01:06:23
группы это вот прям такой справочник где
01:06:26
там забиты просто группы какие они
01:06:28
бывают да там
01:06:29
изобразительного искусства потом тяжелом
01:06:32
машиностроении там сельского хозяйства
01:06:34
еще что то вот просто конечный список
01:06:36
групп у каждого студента просто вот
01:06:39
здесь вот
01:06:40
указатель
01:06:42
к какой он группе принадлежит и
01:06:47
[музыка]
01:06:48
то есть вот студент получается от его
01:06:52
группа вот так вот зависимость в теории
01:06:56
тут еще могут быть поля там и эта группа
01:06:59
может зависеть еще от кого-то вот так
01:07:02
может зависеть от кого-то ну то есть
01:07:04
ссылаться да то есть студент ссылается
01:07:06
на группу группа ссылается еще на
01:07:08
кого-то на какую-то табличку это еще на
01:07:10
кого-то и такое дерево вырастает
01:07:12
вот и конечно чтобы не было проблем с
01:07:17
миграцией они будут пока руку не набьете
01:07:22
вот проблемы с миграциями будут и на
01:07:25
учебном проекте вот вот честно говорю
01:07:28
легче но раз снести эту базу данных
01:07:30
напрочь чем разбираться с этими
01:07:32
застрявшими миграциями но дыру лавсан
01:07:36
золотое правило такое что вот у вас есть
01:07:39
вот каждая вот эта . это таблица
01:07:43
до которую вы создаете и стрелочки их
01:07:46
взаимосвязи то есть начинаете
01:07:50
вот зацикленные миграции как раз джонгу
01:07:55
раскорячилась
01:07:56
все дальше не могу и все и
01:08:01
все не могу и все и завить и тут и тут
01:08:05
как бы зависит от этого смотря что вот в
01:08:08
этот момент улетела в базу данных
01:08:11
короче какого то что делать зацикленными
01:08:15
миграциями там всякими поломанным
01:08:17
миграциями однозначного ответа нет надо
01:08:20
разбираться в каждом конкретном случае
01:08:22
что там случилось чтобы это случалось
01:08:25
поменьше вот у вас есть такая табличка
01:08:28
взаимосвязями начинать нужно с этих
01:08:31
листьев даст конечных то есть надо вот
01:08:35
такую структуру создать начнете отсюда
01:08:39
жди беды
01:08:44
потому что есть связь
01:08:46
есть связь вот сюда а вы начали отсюда
01:08:51
вот этой всей штуки еще нет
01:08:56
будут проблемы поэтому вот так вот надо
01:08:58
заранее
01:09:00
прикидывать связи в голове лучше вообще
01:09:03
проектировать да вот эти взаимосвязи
01:09:05
между таблицами полностью кто кто в кого
01:09:08
будет входить
01:09:10
значит
01:09:13
так вот проектируйте начинаете с листьев
01:09:16
с конечных это делаете это делаете это
01:09:21
делаете и вот получается что вот для вот
01:09:24
этого товарища все таблицы на которых он
01:09:27
ссылается уже есть тогда делаете его
01:09:30
вот когда уже есть вот это и есть вот
01:09:34
это можно сделать вот эту таблицу и
01:09:37
когда есть вот это только тогда делать
01:09:40
вот так тогда
01:09:42
проблемы с миграциями возникновении
01:09:45
проблем с миграциями
01:09:48
минимально но не говорит о том что
01:09:51
невозможно потому что как
01:09:55
древнее оружие morgen штерн это как
01:09:58
чугунный шар шипами цепь и палка
01:10:02
на средневековое что оружие капризная и
01:10:09
новички часто бьют такой штукой себя по
01:10:12
голове сами мастера бьют себя реже вот
01:10:17
так и тут
01:10:19
потом рука набьется будет меньше проблем
01:10:22
но все равно очень капризная штука так
01:10:27
значит
01:10:28
так что у меня там с экраном
01:10:35
вот возвращаемся сюда
01:10:38
вот миграцию я сделал по-хорошему я к
01:10:41
чему я вот здесь вел изменение
01:10:44
по-хорошему после этого неплохо бы
01:10:46
иммиграцию сделать то есть как только
01:10:48
тронули хоть что-то в в модели по
01:10:52
хорошему надо сделать миграцию но я
01:10:54
просто знаю что это твердил verbo устный
01:10:57
мы the description oh к базе данных не
01:11:00
имеет отношения поэтому пленка скажет
01:11:03
ничего не изменилось а нет нет смотри ка
01:11:06
поэтому не греет вот всё о
01:11:14
решила она сделать ну ладно сделала это
01:11:17
чисто джангаш ская штука сделала еще
01:11:20
одну миграцию он этот файл теперь у меня
01:11:22
здесь две миграции у них есть под
01:11:24
порядковый номер
01:11:27
вот порядковый номер
01:11:30
есть зависимости должно быть модуль
01:11:34
хеллоу ворлд и в нем должна уже быть
01:11:37
миграция 1 сделано только после нее
01:11:40
можно выполнять вот эту операцию
01:11:44
то есть все взаимосвязано чтобы
01:11:48
соблюдать ну тут то есть когда вы будете
01:11:50
применять миграции где-то на новом месте
01:11:53
чтобы они высь вы выполнились под в той
01:11:56
же последовательности как вы их и
01:11:58
выполняли чтобы прийти к тому же
01:12:00
состоянию какое у вас есть только на
01:12:02
новом месте то есть все шаги
01:12:04
записываются кто за кем шел вот
01:12:08
так поменяли description запускаем
01:12:11
сервер посмотрим как это отразилось
01:12:15
принципе я знаю что этот description его
01:12:19
можно ей не мигрировать он вот эти
01:12:21
rubles нейм вот здесь поменялось
01:12:26
выделено жирным это обязательное поле а
01:12:30
это не выделено жирным это не
01:12:32
обязательное поле ну можно что-нибудь и
01:12:35
заполнить такой минск
01:12:40
минск
01:12:41
по нибудь там
01:12:47
и удалять
01:12:49
час
01:12:55
все
01:12:57
if i
01:12:58
у меня в табличке появился вот такой вот
01:13:01
объекте значит
01:13:05
значит все могу кликнуть
01:13:09
отредактировать
01:13:12
ничего не делать
01:13:15
миграции
01:13:17
удалять можно в теории в теории то есть
01:13:21
я их могу удалить
01:13:22
сделать сделать опять майк мигрейшн вот
01:13:26
ну могу продемонстрировать но это когда
01:13:30
обычно миграции приходится удалять когда
01:13:33
идет trouble shooting этих проблем с
01:13:35
миграциями и один из первых таких
01:13:38
способов удалить миграции и
01:13:41
[музыка]
01:13:42
значит воссоздать их заново
01:13:46
но по хорошему миграции это часть вашего
01:13:51
приложения и они должны быть в детей
01:13:59
нет такой штуки как финальная миграция
01:14:02
приложение software development life
01:14:05
сайкал цикл как раз намекает на то что
01:14:09
процесс никогда не заканчивается
01:14:12
потом через там год два вы вспоминаете
01:14:15
что вам нужно почтовый индекс сюда
01:14:18
добавить вот вам еще миграция а потом у
01:14:20
вас там появляется какой-то город
01:14:22
который не влазит в эту длину вот вам
01:14:25
еще миграция еще чего-нибудь еще
01:14:27
что-нибудь в общем такое понятие как
01:14:29
финальная миграция нету поэтому миграции
01:14:33
должны следовать за вашим приложением
01:14:35
должны быть в гите
01:14:39
должны вытягиваться
01:14:41
улицах без гита и если вы на локальном
01:14:45
компьютере делаете миграции вносить
01:14:49
изменения в базу данных то
01:14:50
соответственно эти миграции должны все
01:14:53
быть и должны лежать в гитис все все там
01:14:57
записано последовательность операций как
01:15:00
достичь такого же состояния базы данных
01:15:03
как и у вас написано делай раз делай два
01:15:06
делает три делай 4 или 5 в строгой
01:15:08
последовательность чтобы не перепутать
01:15:12
на время работы приложения это не влияет
01:15:15
может быть на
01:15:18
как это может
01:15:21
время создания этих штук когда вы
01:15:24
впервые запускаете приложение ну да по
01:15:26
миграциям надо пройти если у вас
01:15:29
migration миграция этаж и создает
01:15:32
таблицы
01:15:34
в базе данных таблицы в базе данных
01:15:37
создает создается один раз создали
01:15:40
таблицу и все она там есть дальше вы ее
01:15:43
наполняете когда вы туда добавляете
01:15:45
объект и удаляете объекты редактируйте
01:15:48
объекты миграции здесь не причем
01:15:51
миграция это создать таблицу с
01:15:53
определенными колонками все вот тут
01:15:56
структуру только нарисовать то есть
01:15:58
миграции когда срабатывают когда такой
01:16:00
таблицы которая там миграциями описано в
01:16:03
базе данных нет вот раз ее нет вы
01:16:06
делаете my great после my great эта эти
01:16:08
таблицы это таблица появилась базе
01:16:10
данных все если у вас миллиард миграции
01:16:13
лежит то единственное когда они
01:16:16
сработаются не сработают когда вы первый
01:16:18
раз запускаете это приложение когда у
01:16:21
вас база данных пустая не нет таких
01:16:24
таблиц то есть вы инициализируйте свое
01:16:26
предложение запускаете миграции
01:16:29
приложения бежит по этим миграциям
01:16:31
создает таблички вот когда мы запускаем
01:16:34
когда мы первый раз запускали вот эту
01:16:36
болванку пустое приложение
01:16:38
она говорила есть 18 миграций вот а надо
01:16:42
бы их сделать вот эти 18 миграции это
01:16:45
вот минском приложение там были миграции
01:16:48
по созданию таблички с пользователями
01:16:50
таблички с ролями сессиями всякие
01:16:52
служебные таблички которые которые нужны
01:16:55
джанки для работы и когда я первый раз
01:16:58
запустил у меня база данных была пустая
01:17:00
она видит что база данных пустая
01:17:02
миграции есть angry так дорогой у тебя
01:17:04
лежит 18 миграций в базе данных нечего
01:17:09
поэтому миграция мне давай-ка ты
01:17:11
применив даты вот я один раз применил
01:17:13
все эти таблицы создались есть не
01:17:15
работаю запада по заполняю туда этих
01:17:18
пользователей
01:17:19
миграция это про
01:17:21
схемы про структуры есть таблица или нет
01:17:25
таблица уже данные они уже к миграции
01:17:27
мне имеют миграции вот если мы откроем
01:17:30
любую миграцию там данных конкретных нет
01:17:33
нигде в миграция не написано что там
01:17:35
минск что-то мне минск чё там просто
01:17:37
написано колонка имя города колонка
01:17:40
дискрипшн все вот все что есть миграции
01:17:43
так значит
01:17:46
но тут еще django подхватывает вот
01:17:49
странная вот эта вот штука написано что
01:17:53
это сити объект один это такое дефолтное
01:17:57
имя чтобы его поправить это всем
01:18:00
известная метод
01:18:06
стр
01:18:09
все lp вспоминаем вот он него
01:18:14
уже накидал
01:18:17
так супер не здесь не нужен я сам все
01:18:20
придумал
01:18:23
это не перенос данных из кода а это
01:18:29
перенос
01:18:31
как это таблиц конфигурации таблиц
01:18:35
описанных с помощью моделей вот я вот
01:18:38
моделька писал какая у меня таблица
01:18:40
должна быть
01:18:42
вот этим классом я написал хочу в базе
01:18:45
данных таблицу под названием сити хочу
01:18:48
чтобы этой таблице была колонка name и
01:18:50
была колонка description миграция взяла
01:18:53
и перенесла создала колонку
01:18:56
city ой таблицу cities колонками name и
01:19:00
description вот что сделали миграции и
01:19:02
они следят чтобы вот все что написано в
01:19:04
классах такие же колонки такие же
01:19:07
таблички были в базе данных а вот уже
01:19:09
конкретные данные что там минск нью-йорк
01:19:13
и лондон и париж это уже не к миграция
01:19:16
конкретное наполнение это уже миграция
01:19:19
создает только структуру
01:19:21
так а что тут у меня о
01:19:24
этой они сюда они сюда контроль над муж
01:19:29
это этот такой вот и
01:19:32
файл иммиграции мы обычно обычно не
01:19:36
лазим
01:19:38
все что написано в миграциях она
01:19:40
происходит автоматически если уже решили
01:19:43
туда залазить значит вы уже профи в
01:19:46
django уже конкретно понимаете что там
01:19:48
происходит это в редчайших случаях нужно
01:19:51
чего-то вот здесь править в этих
01:19:53
миграциях так она чтобы вот это
01:19:58
благовидно здесь выглядела эта штука
01:20:00
можно ну и нужно чтобы
01:20:04
определить метод
01:20:08
орешка копировал mifine всеми нам
01:20:11
известный метод стр
01:20:15
который отвечает за то как объект
01:20:18
представляется в строковом виде то есть
01:20:21
если мы в него не вмешиваемся то он
01:20:24
представляется вот каким то такой штукой
01:20:26
объект сити объект и его едешь к вот и
01:20:31
все мне это не нравится поэтому я здесь
01:20:34
перепишу по-своему
01:20:37
напоминаю флешбек в а.п. что такое сел
01:20:43
вопрос
01:20:54
ну
01:20:56
хорошо но мало в чем смысл этого сейфа
01:21:08
да это ссылка на тот конкретный объект
01:21:11
вот классом описывается как бы это
01:21:15
проектная документация на будущие
01:21:17
объекты от elf это ссылка на какой-то
01:21:20
конкретный объект с которым этот метод
01:21:23
будет работать
01:21:25
для какого объекта этот метод будет
01:21:28
запускаться вот это ссылка дана этот
01:21:30
экземпляр в частности на минск там на
01:21:33
нью-йорк кто бы это не был то есть из
01:21:35
этого конкретного объекта я могу вернуть
01:21:38
целом этот конкретный объект и есть вот
01:21:42
поля name
01:21:43
я хочу чтобы он вот так выглядел
01:21:47
ну для метода стр уж точно миграции не
01:21:51
надо потому что метод стр тут к базе
01:21:53
данных никакого отношения не имеет
01:21:56
обновляю и вот здесь написано теперь уже
01:22:00
какой-то город
01:22:02
зависимости от того как я его назвал да
01:22:04
а то что у него здесь написано она туда
01:22:06
и выводится
01:22:08
можно одежку добавить никто не мешает
01:22:11
писать здесь сел
01:22:14
целом кстати ганга позволяет ссылаться
01:22:18
найди какой де вот так ли пи кей праве
01:22:22
моряки вот это равнозначно
01:22:25
плюс
01:22:27
объел
01:22:29
плюс такую прямо как конкатенацию сделаю
01:22:32
на место на месте
01:22:34
с
01:22:42
видите ли она интеджер и не умеет
01:22:44
складывать со строками
01:22:48
а так
01:22:51
теперь его едешь к и ну в общем тут дело
01:22:54
художника как вы объект сложенный хоть
01:22:58
он и простой ну в общем смысл сложные
01:23:00
дата может что угодно быть и ваше дело
01:23:03
как это вообще здесь вот в текстовом
01:23:07
виде
01:23:08
отображать и это много где полезно
01:23:12
потому что во многих местах django по
01:23:15
умолчанию заглядывает в объекту как раз
01:23:18
в этот метод стр к объектам который в
01:23:20
базе данных хранятся например она
01:23:23
заглядывает них вот здесь когда
01:23:25
отображает объекты в админке она просто
01:23:28
берет и смотрит а что в методе стр
01:23:30
написано
01:23:32
по умолчанию там написано объекты его и
01:23:35
дешко
01:23:36
хотите по-другому переписывайте так ну
01:23:39
что давайте перерывчик сделаем и
01:23:41
продолжим
01:23:44
сколько там
01:23:46
805 через десять минут встречаемся
01:33:52
так ну что погнали
01:33:56
наши городских
01:34:02
так сейчас я вам покажу прям типовую
01:34:04
ошибку вы меня потом мы и не спрашивали
01:34:07
смотрели отсюда
01:34:09
вот все сейчас все смотрят внимательно
01:34:13
да
01:34:15
вот вы смотрите на такую табличку и
01:34:18
думаете точно
01:34:19
яндекс яндекс надо а только стать и там
01:34:23
есть все все вернулись все я не сам
01:34:26
собой разговариваю с
01:34:28
кто ну кто то есть ладно фильмы точно
01:34:32
индекс dji нужен яндекс и добавляйте но
01:34:37
слова индекса не нравится потому что
01:34:39
индекс она
01:34:42
очень выглядит как будто какой-то
01:34:45
служебная поэтому я так назову индекс
01:34:50
точным чем
01:34:52
индекс ни с чем не пересекала себе мой
01:34:55
друг меня так понятно
01:34:57
все у нас из моделей
01:35:01
вон bells
01:35:05
какой-нибудь там in the jar мне нужен и
01:35:11
джорфел
01:35:13
integerfield
01:35:15
вот пишу ему верба us
01:35:21
нейм чтобы он красивенько был
01:35:31
описываю
01:35:35
вы
01:35:37
после этого сделать миграцию
01:35:42
делаем made my creations и
01:35:45
вижу вот такое сообщение и
01:35:49
в этот момент не надо делать скриншот
01:35:53
этого дела и отправлять мне с пометкой
01:35:55
почитайте пожалуйста и в общем что мне
01:35:59
куда писать
01:36:02
любое сообщение об ошибке
01:36:04
надо почитать что здесь пишут
01:36:07
мод читаем
01:36:11
невозможно добавить
01:36:15
поле
01:36:18
которое не может быть пустым
01:36:21
с таким названием в таблицу сити без
01:36:25
указания кого-то дефолтного значения
01:36:29
это и
01:36:32
это потому что база данных нуждается в
01:36:36
чем-нибудь чтобы
01:36:38
дополнить существующие пор поля что
01:36:41
произошло рисую типовая ошибка вот
01:36:45
причем как это присылают мне и гретна
01:36:48
почитай что там слух перед сном
01:36:52
так вот у меня есть табличка
01:36:59
сити
01:37:01
city есть едешь к
01:37:04
леди есть
01:37:08
ним и есть description вот прямо такая у
01:37:13
нас табличка есть и здесь даже есть одна
01:37:15
запись
01:37:19
один
01:37:22
минск и там что написано и
01:37:26
тут я с помощью миграции говорю у меня
01:37:31
вот еще появится поля
01:37:34
пост
01:37:36
yandex
01:37:38
вот но в принципе ok но я говорю вот тут
01:37:42
же что ад это поле не может быть пустым
01:37:47
и
01:37:48
django а вот вот вот вот вот вот вот
01:37:53
сюда вот вот вот что вот у меня уже есть
01:37:56
табличка здесь вот я сейчас добавляю
01:37:58
колонку ты мне сказал что вот это поле
01:38:01
пустым быть не может ты так описал вот я
01:38:04
сейчас как бы добавляю колонку у меня у
01:38:07
этой записи появляется еще одно поле что
01:38:10
сюда что что что написать и django
01:38:15
спрашивает
01:38:17
что делать спрашивают у меня и
01:38:28
тут же предлагает
01:38:32
как бы как как вы как выйти из этой
01:38:36
ситуации
01:38:37
вот
01:38:40
написать
01:38:42
дефолтное значение по умолчанию прямо
01:38:45
сейчас прямо сейчас моменте я могу туда
01:38:49
что-то там как бы
01:38:52
написать значение которое просто во все
01:38:55
эти существующие ячейки просто будет
01:38:57
заполнена и
01:39:00
второй вариант выйти отсюда вот из этого
01:39:04
диалога и как-то по-другому решить эту
01:39:06
задачу то есть у меня два варианта либо
01:39:10
сейчас дефолтное значение прямо здесь
01:39:13
сделать то куда там какой-то вписать
01:39:18
либо выйти и действительно подумайте
01:39:20
допустим здесь добавить но true
01:39:25
and blank труп вот и тогда она будет
01:39:28
разрешать пустые тогда во всех уже
01:39:30
существующих строчках но
01:39:34
выберем первое забить дефолтное значение
01:39:37
право здесь выбираю вот и смотрите я
01:39:40
проваливаюсь прям в питон видите вот вот
01:39:44
эти три штучки я сейчас нахожусь в
01:39:46
интерактивном интерпретаторе python и
01:39:53
введите дефолтное значение то есть
01:39:56
значение которое будет для всех
01:39:57
имеющихся использовать как валидно и
01:40:01
питонов ска и выражение вот и говори что
01:40:04
daytime на всякий случай доступен вот
01:40:07
если нужно объект времени вводить вот
01:40:11
поэтому я здесь указал какой тип данных
01:40:17
интер perfil значит этаж и валидно и
01:40:22
значение будет интеджер если бы я
01:40:24
проворачивал такую же штуку с charfield
01:40:27
am чарт требует строку вот если бы мне
01:40:29
нужно было строго строковое значение
01:40:31
заполнить мне нужно было бы отдать боли
01:40:34
дну ю строчку как-нибудь вот как вот так
01:40:36
потом с кавычками пром строку так как у
01:40:39
меня это интеджер мне нужно
01:40:43
отдать интеджер трубой интеджер раз два
01:40:46
три раз два три вот все миграция
01:40:50
состоялась можно посмотреть что внутри
01:40:53
то есть не миграция еще не состоялась
01:40:55
просто сделалось миграция файл миграции
01:40:58
подготовился и просто появилось поле с
01:41:02
моим вот этим значениям 123 которая
01:41:05
будет в котором будет заполнено все уже
01:41:08
существующие строки когда будут туда
01:41:10
добавляться эти значения
01:41:13
мигрируют y pense все миграция применено
01:41:21
запуская сервер смотрю что у меня там
01:41:25
обновляю
01:41:27
захожу и вот яндекс появился вот он один
01:41:30
два три здесь
01:41:31
то есть для всех тоже было
01:41:34
так задачка решена и вот
01:41:39
сейчас воспользуемся
01:41:42
мощью мощью
01:41:46
реляционных баз данных и
01:41:49
добавим такую штуку как область область
01:41:53
в которой
01:41:57
существует ну в кафе в котором находится
01:42:00
данный город при этом и сделаем связь
01:42:05
между таблицами вот это relation
01:42:09
при этом важно начать как бы с
01:42:11
правильной таблицы
01:42:13
slice the dose конечного
01:42:16
кто кто с кем связан то есть у меня
01:42:18
будет город
01:42:21
будет внутри области то есть
01:42:24
со стороны города будет таки связь
01:42:28
направлении области той а из области
01:42:30
связи не будет уже как бы ну она будет
01:42:33
само по себе на нее будет показывать
01:42:35
поэтому сначала нужно сделать табличку
01:42:38
область
01:42:40
чтобы не было проблем с миграциями
01:42:47
какой-нибудь там ки
01:42:51
vision
01:42:53
момент в принципе вот так вот нам
01:42:57
подходит сразу же наверно у
01:42:59
региона то же имя
01:43:03
только здесь правим
01:43:10
регион
01:43:14
длина 25 не знаем
01:43:20
имя региона
01:43:23
в принципе дискрипшн а вот так вот прям
01:43:26
подходит можно же копировать
01:43:29
все как есть поправим дискрипшн
01:43:34
ее origin description все остается может
01:43:37
быть пустым сел ну уберу я уже этот
01:43:45
ok отсюда будет name вот собственно
01:43:50
табличка готова
01:43:52
близко готово теперь чтобы эта табличка
01:43:56
появилась базы в базе данных нужно
01:43:58
сделать миграцию
01:44:01
майк не great создаем файле кс миграции
01:44:04
и my great
01:44:08
сразу его
01:44:10
зарегистрируем ва ва ва ва ва ва ва в
01:44:13
админке
01:44:15
админ
01:44:18
tanks tanks
01:44:39
but появилась табличка с регионами от
01:44:43
пустая таблица появилась благодаря
01:44:45
миграция
01:44:48
теперь надо связать таблицы чтобы
01:44:55
город часто рисую как это будет
01:44:58
выглядеть
01:44:59
будет это выглядит следующим образом
01:45:03
вот у меня есть
01:45:05
табличка с
01:45:07
городами
01:45:11
что-то сегодня из меня художник плохой
01:45:16
вот есть табличка с областями
01:45:21
точно также области есть айги название и
01:45:24
у нас записи городов куча-куча городов
01:45:29
сколько там беларуси пусть не только по
01:45:31
беларуси работаем сколько там городов
01:45:34
там уж не знаю и у каждого есть ссылочка
01:45:37
в какой области он находится так
01:45:40
это тоже в этой области находится а этот
01:45:44
в этой находится и этот в этой находится
01:45:49
этот допустим в этой области но вот это
01:45:54
регион
01:45:57
этой сети
01:45:59
вот так это у нас есть штука и то есть
01:46:03
штука осталось вот это вот связь
01:46:05
организовать вообще spree линковать
01:46:07
таблицы к друг другу
01:46:09
покажу как это делается во первых связи
01:46:12
может быть несколько сейчас покажу самую
01:46:15
основную мы не ту ван ту ван ту мы ни с
01:46:18
какой стороны смотреть на нее
01:46:27
колонки для областей в сети до
01:46:30
регион просто табличка на которую
01:46:33
ссылаются она так сходу как бы и и не
01:46:36
знает что на нее идет ссылка хотя
01:46:39
по правде говоря знает
01:46:43
так здесь
01:46:47
админ закрою чтобы было больше места
01:46:50
значит вот мне нужно в сети
01:46:55
определить в каком области она будет
01:46:58
относиться ну и пишу здесь поля регион
01:47:04
регион равно models
01:47:10
и
01:47:18
френки френки
01:47:23
и
01:47:25
вот здесь написано что он там принимает
01:47:31
сюда можно
01:47:34
на первом месте стоит модель здесь
01:47:37
первый аргумент
01:47:39
который в скобочках в конструктор класса
01:47:42
летит это идет модель то есть имя
01:47:45
таблицы с которой мы связываемся у меня
01:47:48
модель регион то есть по сути я вот так
01:47:52
вот
01:47:53
мог бы написать он бы теория но в моем
01:47:58
случае я сначала определил класс сити
01:48:01
потом регион в принципе можно их
01:48:03
поменять местами ну ладно есть выход
01:48:07
django принимает либо вот класс как есть
01:48:10
сейчас я допустим я мог отсюда
01:48:12
где-нибудь импортировать импорт там from
01:48:15
an трон тра-та-та и регион и
01:48:19
он мог импортировать и тогда вот можно
01:48:24
так оставлять он даже и и перестал
01:48:26
подчеркивать здесь подчеркивает не знает
01:48:28
откуда такой импортирует но если будут
01:48:31
импорт был валидный то можно оставлять
01:48:33
как класс просто ссылочку
01:48:36
но если по каким-то причинам не
01:48:40
удалось как у меня сейчас у меня класс с
01:48:42
регионом он позже определен поэтому в
01:48:45
данном моменте еще классе tea классе
01:48:48
регион не знает потому что он ниже есть
01:48:50
так называемый ленивый способ под
01:48:53
текстом
01:48:54
когда на первом месте идет имя
01:48:57
приложения
01:49:02
хлора
01:49:04
.
01:49:06
регион по моему так и данва уже сама
01:49:09
разбирается из этой строчке думает ага
01:49:12
если мне строку передали то я буду
01:49:15
искать
01:49:18
приложение а в ней модель регион вот
01:49:22
либо если сразу класс закинули напрямую
01:49:25
ту его и возьму
01:49:27
дальше
01:49:29
обязательный параметр вот он
01:49:31
подсвечивает он делит
01:49:33
это сигнал базе данных что делать
01:49:38
записью если от
01:49:42
что это означает вот у меня в этой
01:49:44
табличке сити может быть город там я не
01:49:47
знаю какой там
01:49:49
колодищи колодищи город не город ну
01:49:52
пусть будет колодищи город он находится
01:49:54
там в минской области минске регион и
01:49:58
вот у меня строчка
01:50:00
имя колодищи
01:50:03
регион стоит минск и указатель на
01:50:07
соседнюю табличку и
01:50:09
теперь вот этот
01:50:12
параметр говорит о том а что делать если
01:50:14
риге minsk region регион минск сейчас
01:50:17
будут удалять что делать с вот этой
01:50:20
записью колодищи потому что база данных
01:50:23
следит за целостностью и
01:50:27
если у
01:50:29
меня город колодищи
01:50:31
находится в минском регионе кто-то решил
01:50:34
из соседней таблицы минск минске регион
01:50:37
удалить на него из ведь что делать с
01:50:39
колоде щами надо базе данных явно на
01:50:42
этот div ответить потому что она будет
01:50:44
за этой процедурой следить и
01:50:48
причем этот параметр он обязательный
01:50:52
значит так это специальный а тут
01:50:56
константа на пятаки у нас моделях
01:50:59
находится
01:51:01
model's
01:51:03
как модель protect есть такое вот
01:51:08
protect самая надежная то есть не
01:51:11
даваться
01:51:14
защищать защищать таблицу значение от
01:51:18
удаления то есть пока
01:51:19
на минскую область
01:51:22
ссылается хоть один город минскую
01:51:24
область удалить нельзя от этот protect
01:51:27
есть каскад когда минскую область
01:51:30
удаляем и все города которые ссылаются
01:51:32
на эту минскую область каскадно
01:51:34
удаляются тоже опасненько
01:51:37
protect
01:51:38
protect каскад
01:51:41
set null поставить ну если это разрешено
01:51:45
и
01:51:46
у
01:51:47
нас вообще такое опасное в общем самая
01:51:52
безопасная такая надежная protect не
01:51:54
давать удалять регион если хоть один
01:51:56
город на него ссылается сначала
01:51:59
ссылающиеся города удаляем потом можно
01:52:02
удалить потом только можно будет удалить
01:52:04
так дальше мир bows никуда не делась
01:52:09
общей параметр для всех
01:52:12
пишем здесь
01:52:15
где он реджем как он велит есть еще
01:52:21
очень важная штука
01:52:23
сейчас я на так relay pede elit
01:52:27
etname добавляет очень много удобства
01:52:32
сейчас я объясню как это работает
01:52:35
порисую на картинке и
01:52:38
напишу тут city is cities ну как то так
01:52:43
значит все
01:52:46
табличка наверное готова если этот
01:52:49
ничего не забыл ничего не забыл надо
01:52:52
сделать миграцию применить изменения
01:52:59
тоже кстати но часто смотрим
01:53:04
тоже сейчас будет косячок с миграцией я
01:53:07
уже знаю
01:53:09
сейчас расскажу что тут
01:53:12
произойдет
01:53:14
made my creations и он опять по этому
01:53:18
полю говорит то же самое
01:53:23
я добавляю полях который по сути своему
01:53:27
является им пейджером там будет ссылочка
01:53:29
на френки на праймари на пике прайма
01:53:34
реки соседней таблицы по сути там будут
01:53:36
а и диски областей стоять и пустой этой
01:53:40
штуки быть нельзя то есть она тоже самое
01:53:43
какой интеджер мне нужен куда интеджер
01:53:46
вот
01:53:47
то есть
01:53:53
вот у меня
01:53:55
пытаюсь
01:53:56
пам-пам-пам сервер не работает и не
01:53:59
восстановится
01:54:01
вот если бы таблица была просто я
01:54:06
не знаю ну в общем 10 логика какая то
01:54:10
что я сейчас пытаюсь добавить регион
01:54:14
поле по сути этот френки это интеджер
01:54:18
едешь к
01:54:21
вот этого области из другой таблицы
01:54:25
ссылочку сделайте ссылочку на пятую
01:54:27
строку из таблицы регион или на седьмую
01:54:30
строку или на десятую и здесь надо
01:54:33
что-то поставить в моменте у меня сейчас
01:54:36
проблема в том что у меня вот эта
01:54:37
таблица есть
01:54:38
но там нет ни одной записи ни одной
01:54:43
поэтому мне сюда сейчас пока ничего
01:54:46
поставить поэтому я повременю час с
01:54:49
миграцией и
01:54:51
добавлю парочку регионов отсюда если под
01:54:55
это да была пустая то не было бы проблем
01:54:57
то есть не надо было существующей строки
01:55:00
дополнять она бы просто бы все хорошо
01:55:02
сработало но так как я уже добавил эту
01:55:05
строк мне туда все-таки надо что-то
01:55:06
добавить
01:55:08
ссылку на эту табличку тут еще ничего
01:55:11
нет сейчас добавлю
01:55:14
причем покажу вам как свою рыбу можно
01:55:17
работать вообще программно
01:55:19
я вот эту табличку регионами щас заполню
01:55:23
не из админки а из питонов ского кона
01:55:28
так где это все посмотреть
01:55:32
вот так или иначе я лак здесь занимался
01:55:36
тем что тут написано это
01:55:39
т т т т т
01:55:42
так
01:55:43
мне нужно статейка которая называется
01:55:46
мэй кинг верес мы делаем запросы нету и
01:55:50
тут значит и и поищу мои king q &
01:55:55
reece мэйкинг-оф django
01:55:59
от google хорошо ищет и ведет прямо на
01:56:03
django куда надо django сама не очень
01:56:05
ищет
01:56:06
пресет и пиаре френдс испанец
01:56:11
то есть как пользоваться вообще о р м а
01:56:14
здесь написано вот оставляю вам ссылочку
01:56:19
на ночь почитать
01:56:23
сейчас кое какие вещи из него покажу
01:56:29
это прям такой вот о р м со стороны
01:56:33
пайтона
01:56:40
менеджмент пиво и вот этот вот дает
01:56:43
возможность как бы провалиться в
01:56:46
интерактивный shell внутрь нашего
01:56:48
приложения
01:56:50
напомню сам себе эту команду change
01:56:54
password
01:56:55
чек д б л дам дата
01:56:59
играет от
01:57:01
шоу
01:57:04
копировать
01:57:06
то есть
01:57:09
между и оказываюсь в интерактивном
01:57:13
пальто не это все тот же поэтом только
01:57:16
на фоне у меня мое приложение джанга со
01:57:21
всеми моделями со всеми что это на
01:57:23
определял она мне все доступно
01:57:26
задача
01:57:28
задача наполнить
01:57:31
табличку с регионами
01:57:34
данными допустим у меня города то есть
01:57:38
регионы находится в списке как он там
01:57:41
оказался ну допустим я его из файла
01:57:43
вычитал так или иначе у меня есть список
01:57:45
городов и регионов
01:57:47
регион нас
01:57:49
представляет из себя список
01:57:53
списочек в котором
01:57:58
регионы минск
01:58:03
витебск
01:58:09
и
01:58:10
up с
01:58:15
у
01:58:16
нас там еще могилев
01:58:20
могилев
01:58:22
гомель
01:58:25
но miu miu
01:58:29
брест
01:58:32
брест
01:58:34
коз и гродно
01:58:38
гродно
01:58:40
гродно
01:58:41
а
01:58:43
считаем по штукам раз два три 4 5 6 у
01:58:48
кого не зовут минская область 7
01:58:51
все область не будем то чисто пабло ну
01:58:55
как бы минская область не отдельный
01:58:58
регион это
01:59:00
так на кого не забыл родников все на
01:59:04
месте вот и так мне список регионов надо
01:59:08
их как-то поместить в в базу данных ну
01:59:12
хорошо у меня тут их пять штучек 6 штук
01:59:15
даем в принципе можно руками если их там
01:59:17
сто тысяч штук надо как-то
01:59:23
автоматизировать и ул джангл о р м как и
01:59:27
любой урон дает возможность этими
01:59:30
объектами работать как с
01:59:34
объектами да поэтому нам нужна вот эта
01:59:37
штука здесь
01:59:39
импортируемое сюда классы с которым мы
01:59:41
будем создавать объекты
01:59:43
так frome
01:59:53
[музыка]
01:59:55
импорт импорт и
01:59:59
где он так не промахнулся на
02:00:03
марс у
02:00:06
нас
02:00:09
даже наверно ну ладно
02:00:12
раз я с ним буду
02:00:14
работать и вам недостаточно по-хорошему
02:00:18
яблок если в реальной жизни я бы все
02:00:21
модели бы импортировал ну ладно все
02:00:23
класс регион недоступен
02:00:27
теперь нужно просто на создавать
02:00:29
объектов и
02:00:31
все будет хорошо пройтись по цели циклом
02:00:35
по списку for
02:00:39
one in
02:00:43
eanes
02:00:44
prevents так все правильно да и
02:00:50
ндс 1 2 3 4 и вот здесь то место где мы
02:00:56
будем создавать
02:00:57
наши записи в таблицу назову и вот так
02:01:01
вот
02:01:03
результирующий объект рек оби джей облик
02:01:09
by j равно
02:01:14
я думаю понятно что вся
02:01:19
keyboard интера
02:01:26
рек
02:01:29
оби
02:01:31
j&j равно
02:01:34
и
02:01:36
правильно
02:01:40
регион
02:01:41
регион
02:01:43
от класс вот наш класс
02:01:48
дальше у этого класса есть такая штука
02:01:51
которую django называется менеджер
02:01:54
менеджер
02:01:56
набор утилит и интерфейсов которые
02:01:59
позволяют работать с базой данных через
02:02:01
вот этот класс этот менеджер скрывается
02:02:04
за словом объект
02:02:10
объект это прям такой интерфейс и дальше
02:02:14
через точку пошли вот эти инструменты
02:02:16
которые на вот здесь вот они все вот тут
02:02:21
это все от после точки идет
02:02:25
мама на горе сет
02:02:27
методы пошли там куча куча всяких разных
02:02:34
вот он adgex чубчик так я хочу
02:02:38
использовать
02:02:41
метод утилитку закон называется кредит
02:02:46
вот эта штука мне нужно то есть создать
02:02:48
объект и собственно вот пример как это
02:02:51
делается
02:02:53
берется класс
02:02:55
по сути табличка у них у всех этих
02:02:59
табличек у джунгарских модели есть
02:03:01
менеджер объект и за ним выбираем нужный
02:03:05
метод crate
02:03:07
допустим этот объект cry
02:03:12
и
02:03:14
от и дальше
02:03:18
скармливаем туда
02:03:21
название поля
02:03:24
name
02:03:28
таблицы
02:03:29
равно ну что мы туда поставим то что у
02:03:33
нас цикле на данной операции имеется
02:03:36
регион
02:03:38
регион
02:03:40
через запятую можно дискрипшн сюда
02:03:43
застать за добавить но поле не
02:03:46
обязательно можно и пропустить control в
02:03:50
description равно куда-нибудь строчку с
02:04:02
плюс плиз
02:04:10
white lacquer вейдер наполни меня позже
02:04:16
вот таким вот способом
02:04:20
объект создается и дальше можно какой
02:04:23
нибудь отладочную информацию вывести
02:04:26
например ринг
02:04:31
экстра к
02:04:35
и здесь пишем
02:04:39
регион в
02:04:43
виде
02:04:45
подставляем сюда ой движку
02:04:47
свежесозданного объекта
02:04:51
рек
02:04:52
оби j
02:04:56
на предыдущем шаге создался это объект
02:05:00
доступ к его полям через точку пик и
02:05:04
непривычно петлей ганги все равно аиде
02:05:08
или пике я просто привык больше детей
02:05:10
нравится писать обе пиши тяги
02:05:14
с
02:05:17
just
02:05:19
been a и d
02:05:24
так
02:05:28
все жмем вот должно работать
02:05:34
скобку забыл
02:05:39
вот
02:05:41
объектов
02:05:42
. только что создалась выходим отсюда
02:05:46
oxi hit
02:05:51
запускаем сервачок и смотрим уже
02:05:56
поторопился ладно ладно не поторопился
02:05:59
еще вернемся
02:06:02
идем в привычный нам дружелюбный
02:06:05
веб-интерфейс и видим что наши объекте
02:06:08
кивот они здесь есть мы наполнили
02:06:11
программным способом базу данных то есть
02:06:14
я список областей
02:06:18
заполнил руками потому что их всего
02:06:20
шесть но в самом общем случае эти данные
02:06:25
могли быть в экселе могли быть в
02:06:27
текстовом файле могли быть в другой базе
02:06:29
данных я не знаю я питоном мышь уже там
02:06:33
все основные вещи прошли могу их оттуда
02:06:36
спарсить получить как-то и наполнить так
02:06:39
вот базу данных
02:06:43
что еще можно можно можно возвращаемся
02:06:48
сюда в этот shell помнит умные команды
02:06:50
это хорошо и
02:06:53
импортируя сюда и он этот
02:06:59
магаз вот импортируя 5 регион
02:07:04
продолжаем тот играться с базой данных
02:07:06
тем более там кое-какие данные уже
02:07:08
имеются допустим я хочу все эти
02:07:12
объекты оттуда задай база данных
02:07:16
получить то
02:07:19
храню их в списочек ну вернется списочек
02:07:23
а у
02:07:25
region's равно опять
02:07:30
наш класс у
02:07:31
него менеджер объект
02:07:35
века и
02:07:38
есть метод all
02:07:43
все
02:07:44
он сходил в базу данных и
02:07:49
вытряхнул оттуда все объекты которые там
02:07:52
были вот они лежат тут это специальный
02:07:57
специальный список и
02:08:00
такой рецепт то есть
02:08:05
ну это сет
02:08:08
множество которое получилось в
02:08:10
результате запроса этот штук об этом
02:08:12
говорить в общем это специальная такая
02:08:14
джангаш ская
02:08:16
джунгарский джунгарский объект но если
02:08:18
взглянуть
02:08:20
вот эти скобочки сразу подсказывает что
02:08:23
это что-то очень похожее на список
02:08:25
список и по запятой через запятую идут
02:08:30
вот объекте ки которые разделены то есть
02:08:32
вот я в список всех объектов и получил
02:08:35
соответственно все эти плюшки которые
02:08:38
доступны списком они ведь тоже имеются
02:08:42
пожалуйста витебск что там нейм
02:08:46
description
02:08:51
description
02:08:53
please fill my way to
02:08:56
айги он же петей
02:08:59
айди
02:09:01
он же пи кей ну и вот она вся мощь вот
02:09:05
этого о р м а я
02:09:08
лем тут вообще не вора чего никаких там
02:09:11
селектор все за меня делает вот этот
02:09:14
менеджер который транслирует
02:09:18
объектно-ориентированные команды которые
02:09:20
как мы привыкли работать с объектами в
02:09:22
питоне он их транслирует в django
02:09:25
вот эта прелесть вот этой корсет
02:09:28
заключается в том что если у вас в руках
02:09:31
вот этот кори сет находится то по сути
02:09:34
на нем работают все эти штуки что есть и
02:09:37
у менеджера бум можно до фильтровать или
02:09:40
другие методы то пусть меня есть метод
02:09:42
own можно
02:09:46
посчитать
02:09:47
шесть объектов в нем или фильтр
02:09:51
фильтр
02:09:53
или фильтр это уже поиск по базе данных
02:09:59
так ну допустим кто-нибудь простенькая
02:10:03
детей
02:10:06
фильтр здесь интересно организован надо
02:10:10
потренироваться почитать но в общем
02:10:13
допустим я хочу по фильтровать по полю
02:10:16
пеки пеки пишу пи кей он же ольги и
02:10:20
задача вывести все регионы у которых
02:10:24
едешь к ну допустим больше двух вот есть
02:10:27
такая задача все у кого больше двух
02:10:30
пожалуйста не тут вывести список пи кей
02:10:36
фильтр приделывается двумя нижними
02:10:39
подчёркивания
02:10:41
медалей а вот этот фильтр модификатор
02:10:44
должен здесь указать они там
02:10:46
документации есть
02:10:49
грейтер больше дэн больше чем gt или
02:10:56
если включительно грейтер о и кол
02:10:59
грейтер zen-o xg т.е.
02:11:03
ответственно меньше будет л.п. ладно
02:11:07
меня задачка больше
02:11:10
грейтер д н о и кол больше либо равно не
02:11:13
дальше после равна пи впишу чем буду
02:11:16
сравнивать допустим с двойки начнем
02:11:20
ну и вот что там фильтра нула ну надеюсь
02:11:25
фильтра мола 3 но пока вижу что
02:11:28
уменьшается цепочку вот фильтр работает
02:11:32
все эти штуки
02:11:35
все эти штуки они вот здесь написаны вам
02:11:39
надо так я ссылку кидал туда кидал
02:11:44
прочитать не надо это выучить
02:11:48
выучивать запоминать вот но прочесть
02:11:51
разочек чтобы хотя бы в голове
02:11:54
отложилось что
02:11:56
какой инструментарий под руками есть
02:11:58
потому что
02:12:00
в дальнейшем когда
02:12:04
понадобится что-нибудь сделать можно я
02:12:07
это точно видел и потом возвращаетесь к
02:12:10
этому документе q и
02:12:14
подсматриваете
02:12:16
значит что тут first class есть тоже там
02:12:21
может понадобится удалить вот поиск по
02:12:24
полям и вот пошли вот эти модификаторы я
02:12:27
вот показал вот эту вот эту в принципе
02:12:30
больше больше грейтер дан рейтер и кхл
02:12:36
сны сны кол начинается с и
02:12:40
из
02:12:43
это регистра независимый кстати вот эти
02:12:46
вот а вот этот ой
02:12:49
вот это
02:12:51
вот этот экзо точно ой exact сейчас
02:12:56
посмотрим что это пишет
02:12:59
нечувствительный к
02:13:01
регистру поиск
02:13:06
единственное что по-моему
02:13:09
sql lite с которой мы работаем она вот
02:13:12
эту штуку игнорит у нее есть особенность
02:13:19
вот тут про май скилл но вот я помню что
02:13:23
вот этот вот экзо не знаю почему то нет
02:13:26
ссылки может уже поправили
02:13:28
ну в общем раньше было все работало как
02:13:32
будто или в регистра зависимым и либо
02:13:34
регистра независимым варианте в общем
02:13:38
вот эти вот обе штуки работали на искры
02:13:40
ллойд одинаково таешь так что не стоит
02:13:44
пугаться тут есть определенные
02:13:45
особенности так что тут еще можно
02:13:49
посмотреть
02:13:51
балка кстати есть такая функция балкарии
02:13:54
bold балка blade это очень
02:13:58
удобно когда нужно большое количество
02:14:01
объектов сделать за 1 я вот задачку
02:14:03
решил в лоб я просто циклом обошел и
02:14:06
каждый
02:14:08
каждый объект их создал
02:14:11
отдельно то есть у меня в базу данных
02:14:13
улетела 6 запросов
02:14:16
ничто не убивает базу данных так
02:14:19
качественно как большое количество
02:14:21
маленьких запросов база данных сразу же
02:14:24
начинает грустить поэтому если нужно
02:14:28
большие массивы
02:14:31
отправляют в базу данных тут есть
02:14:33
специальная такая эффективная штука как
02:14:35
банк-клиент то есть такое массивное
02:14:37
создание да то есть вы туда прям список
02:14:40
отправляете объектов и в результате в
02:14:43
базу данных летит один запрос и база
02:14:47
данных по сути одной операции может
02:14:49
создать гигантское количество объектов и
02:14:51
гораздо эффективнее работает но сегодня
02:14:54
тонкости и нюансы надеюсь вы там это все
02:14:57
почитаете так получение объектов вот get
02:15:00
тоже полезно метод и тут вот
02:15:04
примеры
02:15:06
опустим нужно мне
02:15:08
получить
02:15:10
объект по какой-нибудь и кишки
02:15:13
вытащите
02:15:15
этого есть метод get
02:15:22
допустим о
02:15:25
диджей бюджет и
02:15:28
вместо о методах который вытягивает
02:15:31
мне нужен get
02:15:33
единственная вещь что
02:15:36
get должен выкинуть
02:15:39
единственный объект условия должно быть
02:15:42
по которым я вытягиваю должно уникально
02:15:47
показывать на конкретную строчку если
02:15:49
там попадётся две строчки будут в
02:15:52
условии ошибка то есть для того чтобы ну
02:15:55
точно не промахнуться лучше spycam да
02:15:57
потому что пи кей он уникально про
02:16:01
показывает на конкретную запись вот у
02:16:04
меня здесь а би джей би джей
02:16:10
брест пожалуйста выкинулся у и диски 5
02:16:16
с объекте com можно прям тут поработать
02:16:19
как с обычным объектом что самое
02:16:21
интересное гусям description смотрим что
02:16:24
у нас там за description
02:16:26
без
02:16:29
rip и он а вот это дефолтное описание
02:16:35
которое мы были было при создании я могу
02:16:38
туда написать что-нибудь свое что
02:16:40
напишем бресту
02:16:47
fr
02:16:49
best
02:16:51
city пусть так будет
02:16:59
как
02:17:01
вот и теперь у меня там вот такое
02:17:05
описание
02:17:07
но базу данных изменения не улетела
02:17:13
объект у любого есть метод
02:17:17
zeiss
02:17:20
сейф
02:17:24
и вот когда мы делаем сейф в этот момент
02:17:26
в базу данных
02:17:28
изменения улетели и можем запустим
02:17:32
сервер они отобразятся уже в таблице в
02:17:35
принципе также также и объекте ки можно
02:17:38
создавать
02:17:39
просто классическим методом можно
02:17:42
создать объекты как мы работали с
02:17:47
как мы объекты создаем так и так и тут
02:17:50
можно было
02:17:55
убить j равно класс берем
02:18:00
рек
02:18:02
регион сюда пишем name
02:18:06
ним равно что нибудь там и
02:18:10
нибудь
02:18:11
но
02:18:13
гекон ну допустим какой-то не знаю город
02:18:17
пром которые почему-то не какому региону
02:18:20
не принадлежит и знаю бывает такое нет
02:18:22
ну пусть у нас будет
02:18:25
или там она
02:18:30
на
02:18:32
новым а ну
02:18:34
вот об объекте q нас создался и теперь
02:18:39
его просто нужно сохранить он появится в
02:18:41
базе данных кстати легко отличить объект
02:18:44
который уже в базе данных и которую а
02:18:47
еще в базе данных нет вот если у этого
02:18:49
объекте ка посмотри спросить его пи кей
02:18:52
там дырка от бублика
02:18:54
это у него еще 5 потому что пики
02:18:57
присылаю это автоматическое поле его
02:18:59
присваивает базу данных она же аиде
02:19:05
вот а вот если его часа храню
02:19:10
zeiss
02:19:14
а теперь у него айди будет от 7 база
02:19:19
данных прислал присваивал присвоила ему
02:19:21
следующую по счету и дешевку
02:19:24
вот для чего это все показываю то есть
02:19:27
вам югах у нас там где
02:19:32
как выбирается таблица куда сохраняется
02:19:35
вот так
02:19:37
использованием нужного класса потому что
02:19:40
new объект это объект класса регион а
02:19:44
классом регион описано таблица регион в
02:19:47
базе данных поэтому все что мы делаем с
02:19:50
объектами класса регион происходит с
02:19:54
таблицей регион
02:19:56
вот так вот вот происходит выбор
02:20:01
конкретно за счет вот этого если у меня
02:20:04
будет объект класса сити то все
02:20:07
изменения все все манипуляции будут с
02:20:10
таблицей city если у меня объект класс
02:20:14
будет регион то все изменения будут с
02:20:17
регионом
02:20:19
вот у него едешь к появилась она же пи
02:20:22
кей
02:20:24
а же и
02:20:26
если мы
02:20:28
значит
02:20:34
был что если мы
02:20:38
это если мы выходим отсюда
02:20:42
но самое интересное прямо
02:20:46
слушает не заслушаться теперь можно
02:20:49
сделать миграцию поэтому вот регион у
02:20:52
нас будет ссылаться на эту табличку
02:20:55
нужно указать какой то регион по
02:20:58
умолчанию вот и у нас теперь есть из
02:21:01
чего выбрать
02:21:03
этом у нас night my creations вот он нам
02:21:07
предлагает либо вручную разобраться
02:21:10
вторая опция либо все-таки прямо сейчас
02:21:13
на месте указать
02:21:15
выбираем первый вариант указать на месте
02:21:19
для френки то есть напоминаю что он
02:21:22
ругается сейчас вот но вот это поле где
02:21:26
это вижу он это пишет
02:21:30
вот но но lable field реджем filtri джин
02:21:36
можешь там со старта непонятно но я уж
02:21:40
точно знаю его мда ношу эту информацию
02:21:43
что френки это ссылочка ну покрайней
02:21:46
мере как вот
02:21:50
по умолчанию джанки происходит потому
02:21:53
что в таблице регион френки и то едишь к
02:21:57
ее можно поменять но там одышка аиде это
02:22:00
интеджер значит вот в этом поле вот в
02:22:04
этом поле должны стоять интеджер и и мне
02:22:06
нужно какой-то интернов написать мы там
02:22:09
создавали объекты и вот регион а
02:22:12
но он в принципе подходит подходит
02:22:16
как бы его видно что он как-то
02:22:19
неопределенно его можно будет потом
02:22:20
поменять
02:22:22
пишу 1
02:22:24
и
02:22:25
применяем миграцию то есть это сначала
02:22:29
сделал файлик вот появился файлик с
02:22:31
командами теперь его нужно применить
02:22:38
got my great создалась таблица все
02:22:42
теперь создалась таблицам но ведь
02:22:43
посмотрим как эта штука выглядит как
02:22:46
админка интерпретирует это все
02:22:57
вот он вот наш регион и вот она
02:23:01
последние вот я их как создавал они вот
02:23:06
города заходим в минск и видим что у
02:23:10
него регион
02:23:16
ставим ему минске регион так сети минск
02:23:21
минске ребенка все
02:23:24
давайте добавим еще какой-нибудь городок
02:23:29
какой
02:23:30
ну давайте с какой области с близкой
02:23:34
что там у нас малорита так
02:23:43
какой добавим
02:23:52
ask индекс
02:23:54
аллен сталин
02:23:58
пусть будет столь
02:24:00
вот яндекс не знаю какой там индекс
02:24:04
какой-нибудь вот такой
02:24:08
вот
02:24:11
вот у нас теперь
02:24:13
появился второй город он привязан
02:24:16
конкретному региону
02:24:21
так и надо по еще по городку добавить
02:24:25
давайте в брестской области еще город
02:24:35
это
02:24:38
такое как
02:24:42
есть и давайте в минскую область еще
02:24:45
город минской области добавим
02:24:49
так
02:24:53
добавим город
02:24:55
минском в столбцы у нас в минском
02:25:01
по-моему минске
02:25:04
на полпути до баранович
02:25:10
да вот у нас тут есть
02:25:14
четыре города а могло быть и больше
02:25:18
теперь вернемся вернемся вернемся назад
02:25:23
вернемся назад нашел и посмотрим что нам
02:25:28
позволяет база данных сделать
02:25:33
была вот такая штучка relate names я
02:25:38
обещал объяснить
02:25:39
что это значит сейчас объясним и потом
02:25:43
покажу как классно с этим работать вот у
02:25:46
нас сейчас
02:25:50
следующей записи имеются
02:25:53
в таблице регионов у нас ну значимых
02:25:59
сейчас по которым мы по добавляли данные
02:26:02
два региона
02:26:06
это брест минск
02:26:09
и
02:26:11
у нас есть четыре города которые мы по
02:26:16
этим регионом раскидали
02:26:24
вот так вот это выглядит
02:26:27
раз
02:26:30
специально один сделал
02:26:40
насчет городов насчет городов городов не
02:26:44
знаю но вот у нас как это могло быть
02:26:47
по-другому так это сити будет сити
02:26:52
насчет городов
02:26:57
допустим у нас
02:26:59
задачка прям к нашему интернет-магазину
02:27:03
пишите вы
02:27:08
аналитическое приложение к вашим
02:27:10
интернет магазин в тазике этого нету но
02:27:12
в реальном магазине конечно же это есть
02:27:15
менеджеры продажники они заходят им
02:27:18
интересно как идут продажи топовые там
02:27:21
какие товары и допустим это у нас не
02:27:24
регионы а товары какой-нибудь книжка там
02:27:27
какая
02:27:28
пушкин избранная лев толстой анна
02:27:32
каренина
02:27:33
и ссылаются на неё не города а заказы
02:27:38
пусть это будет books а здесь заказы
02:27:41
ardors и
02:27:44
типичная задачка такая а сколько же
02:27:47
заказов то сделано было вот этой книге
02:27:51
области а сколько вот этой
02:27:55
для этого неплохо бы знать сколько вот
02:27:58
ссылается этих вот товарищей
02:28:01
ну во первых в штуках на
02:28:06
номер то мне номер на неправильно
02:28:11
гонки количество и и кто не
02:28:17
вот вот эти штуки интересно знать базы
02:28:22
данных такие вещи отдает просто на ура
02:28:26
на ура
02:28:28
очень удобно
02:28:30
так как тут это дело вычистить
02:28:34
все время забываю где-то эти инструменты
02:28:38
так кола бар it
02:28:41
down at
02:28:44
нет
02:28:46
нет а вот
02:28:51
и у меня там была такая штука relay that
02:28:55
name
02:28:56
что оно означает я там не был класс
02:29:02
класс
02:29:04
сити
02:29:08
сити и
02:29:10
я в нем описал эту табличку там когда я
02:29:14
описывал связь с
02:29:18
регионом
02:29:21
регион
02:29:24
одно из один из параметров от этой связи
02:29:29
которая там описал тот кучу этом
02:29:31
параметров несколько было было также
02:29:33
вели тот не буду полностью писателей
02:29:36
that name и я там написал
02:29:41
строчку
02:29:43
си и
02:29:46
я с города что это значит
02:29:51
вот это слово означает вообще вот этот
02:29:55
вот параметр
02:29:57
он показывает с кем мы связываемся
02:30:03
показывает на соседнюю табличку регион
02:30:06
говорит что я делаю связь с табличкой
02:30:09
region's
02:30:11
регион от в целом а вот этот параметр
02:30:15
relate name говорит о том как бы я хотел
02:30:18
в обратную сторону вызывает записи то
02:30:21
есть допустим у меня есть какой то
02:30:24
регион пусть это будет тут у нас есть
02:30:26
фанаты город брест
02:30:29
брест и
02:30:34
есть ссылочка и вот я держу в руках вот
02:30:38
этот объект брест я его из базы достал и
02:30:42
я хочу
02:30:44
выдернуть
02:30:46
все города которые входят которые
02:30:49
ссылаются на этот регион допустим у меня
02:30:51
вот в руках есть брест
02:30:55
объект объект и мы с маленькой буквы
02:31:00
именуем поэтому когда я вижу джанки
02:31:03
штуку которую называется брест
02:31:06
я понимаю что это класс брест и скорее
02:31:11
всего эта табличка а когда я вижу пресс
02:31:15
с маленькой буквы я понимаю что это
02:31:20
объект конкретный вот то это уже не то
02:31:24
быть ну то есть в данном случае не будет
02:31:26
ни брест этот регион даст большие буквы
02:31:30
регион вот когда я вижу большую букву
02:31:33
это класс я понимаю что это класс а вот
02:31:37
это с маленькой буквы объект значит у
02:31:39
меня в руках конкретный объект в
02:31:42
парадигме а.п. у нас есть через точку
02:31:46
доступа
02:31:48
доступ в каким-то свойствам методом
02:31:50
атрибутом этого объекта и допустим я
02:31:53
держу вот этот в руках объект брест и
02:31:55
вот здесь я указываю как бы я хотел
02:32:01
обращаться ко всем объектам
02:32:05
из таблицы сити которые имеют связь вот
02:32:09
с этим конкретным
02:32:11
регионом брест ну я хотел бы наверно все
02:32:15
города которые ссылаются на брест
02:32:18
вызывать в словом города поэтому я и
02:32:21
написал хочу все ссылающиеся объекты из
02:32:25
таблицы сити которые ссылаются на регион
02:32:27
брест вызывает по имени города как-то
02:32:30
работает держу брест говорю как вот
02:32:32
здесь запрограммировано
02:32:35
си и
02:32:37
я спешу
02:32:40
вот и знать что я от бреста еду а брат в
02:32:46
обратную сторону по связям и сгребаю
02:32:49
всех кто на него ссылается и
02:32:51
там не помню по моему холст надо делать
02:32:54
и
02:32:55
получу все города которые сходятся если
02:32:59
я напишу здесь несите а вася
02:33:04
вася тогда все объекты из таблички сити
02:33:09
которые ссылаются на этот конкретный
02:33:11
брест я вынужден буду звать по имени
02:33:14
вася
02:33:16
но это не логично хотя возможно
02:33:20
понятно эту штуку или еще раз объяснить
02:33:30
в общем сейчас покажу еще на коде
02:33:33
разочек
02:33:37
можно стать жить и без неё джанга
02:33:40
формирует специальное имя через который
02:33:43
можно пройти и без этого дела этот name
02:33:46
вот она просто выглядит корявое по
02:33:48
мнению удобно поэтому вот это вот
02:33:50
указание здесь
02:33:53
облегчает жизнь еще раз что он означает
02:33:55
значит в целом вот это поле создает
02:33:58
связь с
02:34:01
табличкой под названием регион с его
02:34:04
пике прайма реки ну то есть связывает
02:34:09
две таблички
02:34:10
по модели мини туман то есть много много
02:34:14
объектов из таблички сити могут
02:34:17
ссылаться на один объект из таблички
02:34:20
регион то есть русскими словами в городе
02:34:24
бы в регионе брест может быть очень
02:34:26
очень очень много городов которые в него
02:34:28
входят и тут вот вот эта штука говорит о
02:34:31
том когда я возьму в руки брест чтобы
02:34:34
получить все записи и за это из этой
02:34:37
таблицы как мне спрашивать я пишу хочу
02:34:40
чтоб
02:34:41
спрашивал брест . сейчас он будет
02:34:46
откликаться давайте на практике
02:34:47
посмотрим у нас есть два объекта
02:34:51
минске минске регион и обрезки регион
02:35:00
там где ссылка программируется на вот
02:35:04
откуда она идёт
02:35:09
если у вас есть еще какая-то
02:35:14
ну допустим у вас есть так что еще может
02:35:17
быть
02:35:20
города ссылаются что еще там может
02:35:24
может на брестский регион
02:35:28
ну и зная дам железнодорожная станция да
02:35:31
там нет улица улица в городе ссылается
02:35:34
на город город ссылается на регион ну
02:35:41
железнодорожная станция вот она может
02:35:43
стоять я не знаю там в поле в каком-то
02:35:45
да и вообще ни в каком городе поэтому
02:35:48
она сама
02:35:49
представим что jeejeeh даришь
02:35:51
железнодорожная станция может стоять в
02:35:53
поле условно может быть в каком-то
02:35:56
районе но
02:35:58
допустим она принадлежит вот конкретно
02:36:00
области и тогда мы эту штуку определим
02:36:05
как
02:36:07
класс допустим
02:36:11
railroad
02:36:17
railroad
02:36:18
[музыка]
02:36:21
station
02:36:24
класс будет очень похож
02:36:26
чем на все что мы делали до этого
02:36:30
будет это так работать
02:36:35
от следуем ся
02:36:38
правильного
02:36:40
родителя и
02:36:44
можем вот эти штуки скопировать
02:36:48
для начала
02:36:52
вот
02:36:54
опять таки железнодорожная станция на
02:36:57
может принадлежать какому-то региону у
02:37:00
нее будет имя
02:37:04
допустим дадим ей дискрипшн
02:37:07
весы на если мы оставим час как есть вот
02:37:11
так django провернуть такую штуку не
02:37:14
даст
02:37:16
частным
02:37:21
stations station name
02:37:25
все поправили вот если попробуем же
02:37:28
сделать миграцию
02:37:32
django не даст такой фокус провернуть и
02:37:35
сейчас посмотрим почему моих мигрейшн
02:37:39
вот такие вещи тоже не надо мне
02:37:42
присылать типа там denis там будет
02:37:45
свободное время и вот это вот прочитайте
02:37:47
а то я не читал там что-то все красная
02:37:50
вот как то вот увидел rsh ничего не
02:37:52
понимаю поэтому лампой кинул вы
02:37:55
почитаете вот не надо читаем читаем
02:37:58
разбираемся
02:38:00
хорошо system check in the fight сам еще
02:38:05
системная проверка выявила некоторые
02:38:08
проблемы и пишет old city регион
02:38:12
обратный асессор для хэллоу сети краж as
02:38:17
close as
02:38:19
пересекается
02:38:20
с таким же с аром для хэллоуин это
02:38:25
приложение
02:38:27
video station
02:38:29
реджем и тут же пошли hand и что делать
02:38:32
либо сменить этом то либо 100 все в
02:38:35
общем тут написано вот эти hand и идут
02:38:36
подсказки что произошло вот это тот
02:38:41
relate etname обязательная то есть не
02:38:45
обязательно но совпадает тут и тут и
02:38:47
[музыка]
02:38:49
получается что если мы возьмем регион
02:38:52
брест
02:38:54
вынем возьмем нас таблицы достанем его
02:38:57
опишем . cities django в этом случае не
02:39:01
понимает мне по обратной связи в какую
02:39:04
таблицу идти станции или в сети мне или
02:39:08
все вместе выгребать
02:39:11
и все горит и вот эти
02:39:15
реверс ные асессоры пересекаются не знаю
02:39:18
что делать либо кого-нибудь поменяю либо
02:39:20
учил бери пиши поэтому здесь логично
02:39:25
написать какой-нибудь будет там stations
02:39:27
и
02:39:30
того чтобы для блеска в региона выкинуть
02:39:34
все станции которая у него входят надо
02:39:36
будет написать брест . stations чтобы с
02:39:39
брестская региона выкинуть все города
02:39:42
которые в него входят нужно будет
02:39:44
написать брест . cities вот еще
02:39:48
табличку мы завели
02:39:52
теперь пытаемся сделать иммиграции еще
02:39:55
раз теперь все нормально
02:39:59
эми грей вот у нас еще одна таблица
02:40:02
мер зайдем в этот shell и все-таки
02:40:06
попробуем попробуем оттуда по поводу вот
02:40:10
этой вот штукой
02:40:12
генах
02:40:19
здесь кто здесь нужно импортировать
02:40:23
класс
02:40:26
region's
02:40:32
вот уже набрал бы руками вот так
02:40:38
перебирать
02:40:40
man с
02:40:42
импортирую вот этот модель регион
02:40:47
теперь нужно выбрать оттуда брестский
02:40:51
регион
02:40:54
надо желательно знать его сейчас вот уже
02:40:58
не получится так по моему какой он там 5
02:41:01
был
02:41:02
по счету
02:41:06
ладно пишем
02:41:09
блеск
02:41:11
равно
02:41:14
берем наш класс
02:41:24
елы-палы
02:41:32
берем наш клуб берем наш класс
02:41:37
его есть менеджер
02:41:40
коробка с инструментами
02:41:43
об дпс и
02:41:47
поедишь ки методом get можно и вот базы
02:41:51
данных
02:41:52
вытащить
02:41:54
получается
02:41:56
по полю пи кей у которого 5 равно 5
02:42:02
смотрим что прилетела брест ли у нас
02:42:05
брест до угадали теперь минск
02:42:08
menasi к именно с был первым
02:42:14
меня не что
02:42:18
здесь пишем
02:42:21
минус
02:42:25
проверенный а
02:42:28
вот у нас есть два объекте к теперь у
02:42:32
меня задачка получить список всех
02:42:35
городов которые входят в
02:42:42
брестский регион берем брест
02:42:45
в лес
02:42:47
братск
02:42:50
брест . то что мы указали вот здесь то
02:42:56
есть идем как бы в обратную сторону по
02:42:59
этой ссылочке по этой связи
02:43:02
можно в принципе нажать вот посмотреть
02:43:04
что это он пишет что это специальный
02:43:07
объект
02:43:08
мы не туман менеджер ну то есть связь от
02:43:13
объект и
02:43:15
дальше
02:43:17
вот это слово менеджер говорит о том что
02:43:21
это вот штука подобное вот этой
02:43:24
то есть все те же методы применимы можно
02:43:27
взять ул то что на него ссылается вот
02:43:32
там вывалились два города которую входит
02:43:36
тоже самое можно провернуть с минском
02:43:48
это вообще прос удобнейшая и мощнейшая
02:43:52
штука представьте что у вас есть продукт
02:43:58
какой-то там книга вы ее из базы данных
02:44:03
выбираете поедишь киба имени почем
02:44:06
угодно вот и
02:44:08
говорите пожалуйста там что ну как-то
02:44:11
будет вот так вот
02:44:15
какая-то книга
02:44:17
букв и
02:44:21
через точку если вот подобным образом
02:44:24
рила этот name заказах
02:44:27
сконфигурировали то тут будет ор дпс
02:44:31
. и
02:44:36
получаете но у меня там метами книге нет
02:44:39
ничего нету но сама команда будет такая
02:44:42
получить и
02:44:44
получите все книги за период или неё а
02:44:49
допустим фильтр фильм фильм
02:44:52
фильм
02:44:56
то есть заказа фильтруете там
02:45:00
какой-нибудь из головы придумаю допустим
02:45:03
у заказа есть поля крио и
02:45:07
т.д.
02:45:10
дата создания есть у заказа дата
02:45:12
создания и
02:45:18
нам интересует предыдущий месяц
02:45:24
там по моему created дейт есть
02:45:28
модификатор
02:45:31
моему
02:45:32
для бейт field ну-ка посмотрим что ты и
02:45:36
так
02:45:37
дашка заржавела давно и не выхватывал из
02:45:41
нужен
02:45:47
dates daytime де фрaнс interception dc
02:45:52
крик gate где-то вот он будет blit за кт
02:45:57
вот тут где-то будет поиск по полям
02:46:00
контент стартует
02:46:03
дэйт и а вот это monks помню вот читал
02:46:08
равно помню что что-то мне нужно вот
02:46:09
задачка
02:46:12
задачки как этот за предыдущий месяц там
02:46:15
выдернуть заказы и
02:46:22
вот как они это делают то есть моем
02:46:26
случае
02:46:28
[музыка]
02:46:29
мне нужна за предыдущий месяц
02:46:33
выдернуть все заказы как бы это сделал
02:46:36
модификатор да по добавил брат-близнец
02:46:40
mans я бы еще и год нужен то есть вот
02:46:50
и
02:46:52
то есть мне нужны заказы которые созданы
02:46:55
в году
02:47:01
2022
02:47:03
и
02:47:04
если я поставлю запятую логика будет
02:47:07
работать в режиме и и
02:47:10
cray today
02:47:13
abs
02:47:16
град kontrol ц не работает
02:47:30
man
02:47:32
monkey man
02:47:35
как только тут наверно год нужно им
02:47:38
пейджером показать что-то мне
02:47:41
кажется так же как и месяц предыдущий
02:47:45
месяц у нас был по моему 6
02:47:49
вот таким образом я возьму книгу
02:47:53
пройду по обратной связи ко всем ее
02:47:56
заказам и отфильтрую их по вот этим
02:47:58
критериям все заказы если у них есть
02:48:01
поле created дейт у которых год равен
02:48:06
2022
02:48:08
месяц равен 6 все заказы сделанные
02:48:12
прошлом в прошлом месяце появятся у меня
02:48:16
в виде списка от такого я могу посчитать
02:48:19
их количество методом каунт могу сложить
02:48:22
их сумму
02:48:24
могу там ну все могу график нарисовать
02:48:27
столбиками линиями в общем штука очень
02:48:30
мощная
02:48:32
так что тут еще такое можно притянуть
02:48:38
это через запятую работает логика по и
02:48:44
вот если нужно и два условия
02:48:47
одновременно то через запятую можем
02:48:50
сколько хотим условий положить если
02:48:53
нужно условие или она чуть сложнее
02:48:57
это специальный
02:49:04
дозатор распалась вот комплекс капс всё
02:49:11
объект
02:49:13
эту штуку надо импортировать и вот с
02:49:16
помощью пил объектов можно любую
02:49:18
навороченную логику применять
02:49:21
сейчас ошибку опять
02:49:24
импортирую и с помощью вот этих какие-то
02:49:27
кори кори объект можно формировать любые
02:49:33
сложные запросы то есть если мне здесь
02:49:36
нужно или
02:49:38
поправлю чтобы
02:49:40
или вот за два года надо выборный так
02:49:44
еще раз я по странной логики допустим не
02:49:48
нужны все заказы которые были сделаны в
02:49:50
двадцать втором году и
02:49:52
в
02:49:55
1091 вот какая странная логика вот за
02:49:58
вот эти два года
02:50:00
чтобы и за тот и за тот за оба эти два
02:50:04
года
02:50:06
получить результаты не нужно применить
02:50:09
логику или не подходит любой заказ у
02:50:12
которого дата создания вот такая или вот
02:50:16
такая в данном случае сработает логика и
02:50:21
чтобы переделать под логику или мне
02:50:24
нужен объект вот это каждый запросик of
02:50:27
оборачивается в этот тип
02:50:32
делает сам
02:50:37
уберем
02:50:41
число
02:50:42
как и была
02:50:46
единственная теперь вот эти объекты
02:50:48
между своей между собой нужно связать
02:50:52
специальным знаком то есть это по-моему
02:50:55
это pipe на что-то этот
02:50:58
да вот ampersand это и а вот этот pipe
02:51:03
это или и вот пример такого
02:51:08
запроса с логикой или
02:51:13
ну ладно это абстрактный какой-то пример
02:51:15
сейчас города там
02:51:17
будем
02:51:20
фильтруем чтобы прям был
02:51:23
объект есть
02:51:25
регионы есть самый заполненный мы
02:51:28
пропустим создадим
02:51:31
сам
02:51:32
требуется вега
02:51:35
некоторые регионы туда список прилетит
02:51:38
потому что фильтр вот это фильтр эта
02:51:41
штука всегда отдает список объектов
02:51:44
состоящих из нуля или более количество
02:51:47
что фильтр всегда отдает список дед
02:51:50
всегда отдает один объект либо валится
02:51:52
если там в результате получается два
02:51:56
объекта он такой все так берем регионы
02:52:01
регион а не буду я не куда сохранять
02:52:05
пусть у нас сразу будет на виду
02:52:07
region's
02:52:09
не делать лишнюю операцию об дпс с белым
02:52:16
фильтр
02:52:19
или фильтр
02:52:22
фильтр
02:52:23
ну и ладно пики пики и равно одному это
02:52:29
понятно name риге
02:52:32
регион на
02:52:34
класс называет регион вот понятно
02:52:38
видим что все равно какой рецепт список
02:52:42
хоть и состоящей из одного объекта
02:52:44
потому что фильтр всегда отдает список
02:52:47
если мы попробуем через запятую здесь
02:52:54
а
02:52:56
равно 2 эта логика и получаем как бы
02:53:04
этот аргумент рипит от не нравится
02:53:10
keyword
02:53:15
ругается ну ладно допустим а если name
02:53:19
так нормально но ничего не совпало до
02:53:22
простой список потому что нет такого
02:53:25
объекта у которой одновременно пике
02:53:27
равен 1 и имя 2 но вот объект
02:53:30
с именем
02:53:33
мирно секс должен и появится
02:53:37
до логика и она работает допустим если
02:53:42
нам нужна логика или тогда нужен отдых
02:53:47
отдых
02:53:53
оборачиваемая штуку объект
02:53:58
пишем или и
02:54:01
повторяем
02:54:08
или 2
02:54:12
логика говорит о том что должно
02:54:14
выскочить два объекта ук а потому что
02:54:19
первый мочиться поэтому второй поэтому
02:54:23
да я вот они есть минск и витебск
02:54:26
вот как я заполнял можно и 3 добавить
02:54:41
вот их три можно вообще логику там
02:54:44
сложно сделать вот это все поместить
02:54:47
скобочки
02:54:51
за что это у меня тоже куб вот такое вот
02:54:54
сложное выражение
02:54:56
огромная не перепутать эти скобки вот и
02:55:01
сказать о
02:55:03
или
02:55:06
или
02:55:08
5-ку раз уж мы с ними начали
02:55:11
или
02:55:13
нейм
02:55:15
proven
02:55:17
она
02:55:19
но ванна и
02:55:23
вот он тоже сюда долетел такие сложные
02:55:27
клэри вот эти логические там комбинации
02:55:30
можно делать с помощью этого q и
02:55:35
и это не все как по мне это реклама там
02:55:38
телевизор там на диване да там купе нож
02:55:42
и это не все тогда в подарок вы получите
02:55:44
кофеварку этот момент там спутник в от
02:55:49
изумления и
02:55:51
выпадает из рук и он разумевше ему и так
02:55:55
и это еще не все набор полотенец и
02:56:00
забыл что хотел показать а
02:56:09
так это нам на придется импорт 0
02:56:13
мог of control of сам
02:56:20
сеток в
02:56:22
потолок
02:56:26
все в одном месте что ли
02:56:35
где а где
02:56:39
а этом так making верес макин making
02:56:43
верес в общем есть всякие суммы макс и
02:56:49
максимум и минимум и давно этим не
02:56:52
пользовался
02:56:54
не помню где это болтается
02:56:58
к станку форвард
02:57:01
велит общем вот эту штуку вам надо
02:57:04
внимательно на выходных почитать сначала
02:57:09
до конца сказать с конца до начала от
02:57:12
середины в обе стороны этот документ
02:57:15
посмотреть что у него есть какими
02:57:18
возможностями
02:57:19
так может тут есть control of
02:57:22
сам
02:57:34
вот сам
02:57:37
мне что-то кажется они его должны
02:57:41
импортировать
02:57:43
только я что-то в примерах не вижу
02:57:46
пишут что это класс без них понимаю
02:57:50
откуда они уберут
02:57:52
мин-макс
02:57:54
аккаунт
02:57:56
сам ладно попробуем с наскоку
02:58:03
со мах и
02:58:05
какой-нибудь
02:58:08
дикий прокатит
02:58:11
внутри будет сам по моему это не так
02:58:15
работает до
02:58:17
to agree бейкер вот
02:58:22
клан таджик кредит кредит кредит
02:58:27
каунт ok
02:58:31
где сам
02:58:40
ноль все сдаюсь в общем где то есть в
02:58:45
общем умеет она суммировать имеет
02:58:48
минимум максимум и кучу чего еще умеет
02:58:52
делать только
02:58:53
нашел но как то я не удовлетворен
02:58:57
результатом их
02:58:59
сама
02:59:06
агрегат
02:59:10
выскажу выскажу
02:59:13
выскажу предположение что эта штука
02:59:18
рядом где-то school
02:59:20
находится сейчас оттуда мы импортировали
02:59:23
kill
02:59:24
оттуда
02:59:28
дернуть и сам
02:59:31
до опыт не пропьешь так
02:59:36
тогда
02:59:37
он geeks и
02:59:40
дергаем оттуда а уж и
02:59:44
как они там пишут о грибе и
02:59:50
ранее the cut
02:59:54
angry birds и функцию на агрегацию сам и
02:59:58
по полю пи кей
03:00:03
ok
03:00:09
рай скобочка и
03:00:13
is not be found a
03:00:16
в этом кавычках на хорошо
03:00:20
да вот короче
03:00:23
взял и про суммировал все и диски
03:00:28
просто единственный интеджер был да вот
03:00:31
он его про суммировал а там могла быть
03:00:32
сумма в рублях заказов то есть я могу
03:00:36
отфильтровать все заказы и потом все что
03:00:38
осталось агрегировать взять и посчитать
03:00:41
сумму это всякий аналитика то что
03:00:45
происходит с базой данных
03:00:48
ну что на сегодня хватит дома шкалам
03:00:51
читаете tz читаете вот эту доку
03:00:54
которую вам выслал и к понедельнику у
03:00:58
вас
03:01:01
это все только интерпретаторы
03:01:04
это я вам показывал на лету но на самом
03:01:09
деле в реальной жизни есть вот это view
03:01:11
хода и вот местечко где логика
03:01:15
от где-нибудь здесь будут вот такие вот
03:01:18
все что я вам показывал они вам юхи
03:01:20
могут находиться то есть когда пришел к
03:01:23
приложению запрос вот здесь врубается
03:01:26
какая-то встроенная логика и потом
03:01:29
отдается ответ то есть на этом месте
03:01:32
могут быть манипуляции с базой данных
03:01:35
принципе так
03:01:38
давайте ладно
03:01:40
вы сами спросили я не виноват буду
03:01:44
показывать например
03:01:48
он
03:01:51
.
03:01:57
models как это может быть простой пример
03:02:00
прям реально с базой данных приходит
03:02:04
вопрос how old я никаких этих
03:02:09
не вывожу здесь
03:02:14
так допустим
03:02:18
рим
03:02:20
пустая строка раз у меня тут довольно
03:02:23
просто все сделано что сделаю беру
03:02:26
регионы самый наш заполненный
03:02:30
бекона
03:02:32
равно
03:02:34
models .
03:02:38
регионы регион оптикс
03:02:43
аул просто беру все регионы которые у
03:02:46
меня есть в базе данных сколько бы там
03:02:48
ни было и как бы они там ни к не
03:02:50
оказались циклом прохожу по ним phone
03:02:54
back а там списка подобная структура
03:02:57
were set по ней можно ходить списком
03:03:00
форекс in region's и
03:03:06
берут вот этой своей строке котором я со
03:03:09
старта пустая
03:03:13
плюс равно
03:03:16
в этом плюс равно f в
03:03:21
строка и
03:03:23
пишу
03:03:25
допустим а как это у меня в конечном
03:03:28
итоге будет html ну ладно
03:03:34
геон
03:03:36
отставляю сюда
03:03:39
регион
03:03:42
олега .
03:03:48
нейм на-на-на все уже короче держитесь я
03:03:52
держусь и вы держитесь
03:03:56
ок регион name и
03:04:00
так ставим бы переход на новую строчку
03:04:04
значит какой обед
03:04:06
сходили в базу данных вытряхнули оттуда
03:04:09
все регионы циклом прошлись по ним
03:04:11
сформировали
03:04:13
текст такой вот просто списочек этих
03:04:16
регионов даже можно так сделать
03:04:23
вспомнил
03:04:25
он здоров list on он берет an ordered
03:04:29
лист так тогда это будет life 3 ст айтем
03:04:34
здесь будет
03:04:37
будет
03:04:38
закрываться чек-лист ой там когда все
03:04:42
это закончится когда мы по всем
03:04:45
пройдем по всему списку
03:04:48
мы тут возьмем осталось только закрыть
03:04:53
on a door at лист
03:04:56
млт надеюсь там помните и
03:05:00
что остается вернуть вот этот out
03:05:05
просто в виде ответа
03:05:10
вот посмотрим что будет
03:05:15
запускаем наш сервачок
03:05:21
также посмотрю какой url там
03:05:24
все равно какой url
03:05:26
часто смотрим она подскажет
03:05:34
вот
03:05:39
такая
03:05:41
вот силь ву пле
03:05:44
прям вот
03:05:46
полнофункциональное приложение
03:05:48
получила запрос от пользователя сходила
03:05:51
в базу данных с базы данных получила
03:05:54
данные в виде списка формировал ответ от
03:05:58
правила пользователя причем если я зайду
03:06:01
в админку добавлю или удалили из меню
03:06:04
тут что нибудь потом зайду сюда обновлю
03:06:07
я получу обновленный список потому что
03:06:10
при каждом запросе
03:06:11
приложение обращается в базу данных
03:06:14
хочет достает оттуда данный отображает
03:06:17
их все это автоматическими не нужно
03:06:19
вручную прорисовывать вот прям
03:06:21
real-world examples
03:06:24
пример из реального мира так
03:06:27
уже пересиживать
03:06:31
я-то тут один сижу у вас то там наверно
03:06:34
там жены и дети семьи
03:06:36
так и за домашка короче
03:06:43
справочнике сформировать я конечно не
03:06:46
буду проверять вот как вы именно их
03:06:48
сформировали читайте т.д. находите там
03:06:52
все данные которые
03:06:54
выглядят как справочники это там авторы
03:06:58
отсюда сразу говорю список авторов там
03:07:01
какие то там размерности там валюты еще
03:07:05
что то я уже не помню я бы создал
03:07:07
отдельное приложение для справочников и
03:07:11
в модели справочников он будет
03:07:14
приложение допустим там
03:07:16
забыл какой английский справочник
03:07:21
у
03:07:22
него будет модель и вы все справочники
03:07:26
здесь от зовете и
03:07:27
с помощью терминала
03:07:31
заполните их не через админку а через
03:07:35
терминал то потренироваться
03:07:38
потренируйтесь там их оттуда доставать
03:07:41
по одному по два
03:07:45
зарегистрируйте
03:07:46
модельки в
03:07:49
админке то есть этим уже можно будет
03:07:52
пользоваться и
03:07:55
вот после того как народ видит админку
03:08:00
вот переходим админку да и
03:08:04
особенно когда вот такие штуки видны но
03:08:07
это же простая штука но уже от а по все
03:08:10
это автоматом и тут вот и то есть это
03:08:13
есть то есть я могу прямо тут
03:08:14
редактировать тут прям красота
03:08:19
стоп зачем дальше все в приложение
03:08:23
готово
03:08:24
все есть в принципе да даже я бы сказал
03:08:29
частично
03:08:34
надо не ничего сдать а заполнить
03:08:37
справочники
03:08:39
сдавайте
03:08:45
ничего можете сегодня в одиннадцать
03:08:47
вечера
03:08:48
так ладно это все шутки в общем народ и
03:08:52
вот видят вот эту админку прекрасную
03:08:55
джанга вск ультра тут вот есть хлебные
03:08:56
крошки вот эта вот штука называется
03:08:58
хлебные крошки то есть тут тык тык тык
03:09:01
прям по крошкам идем
03:09:03
вот есть админка пользователь роли право
03:09:07
там вот все всё стоп где выглядят
03:09:12
прекрасно мод сворачивается и кстати она
03:09:15
даже адаптивная то есть если вы будете
03:09:17
смотреть эту штуку
03:09:19
с мобильного телефона она будет
03:09:22
адаптироваться то есть схлопываться
03:09:25
потмо мобильное разрешение то есть тут
03:09:27
чем прекрасно всё дальше не надо хватит
03:09:30
в приложение готово но нет это далеко не
03:09:33
все это далеко не все
03:09:37
все на этом сегодня хватит
03:09:41
то я вас тут уже передерживать сколько
03:09:44
11 минут
03:09:47
справочники заносите в приложении
03:09:50
читаете доку с конца до начала сначала
03:09:53
до конца середины в обе стороны по
03:09:55
джанки тренируетесь с объекте коми если
03:09:58
что если что-то пошло не так удаляются
03:10:02
база данных вот этот файлик
03:10:04
выдали удаляются миграции и все можно
03:10:08
начать заново то есть все данные
03:10:10
хранятся в этом файлики
03:10:12
последовательность создания
03:10:14
хранится в миграциях поэтому всегда
03:10:17
можно это вычистить ему ли у вас
03:10:20
учебный проект ничего в нем такого нету
03:10:23
если что удаляйте базы удаляйте миграции
03:10:26
и заново только в миграциях смотрите
03:10:28
внимание файлик и нет и удалите случайно
03:10:32
вот он должен здесь оставаться он хоть и
03:10:35
пустой но он делает и спатки модуль
03:10:41
джанга не распознает то есть вот это
03:10:43
можно удалять пересоздавать но они
03:10:47
напоминают вот это все должно быть в
03:10:49
детей вот отличие от media is static of
03:10:53
миграции должны находиться в детей когда
03:10:56
вы сделаете пул на настоящий сервер вы
03:11:00
там тоже эти миграции должны применять
03:11:02
потому что в
03:11:04
идеальном случае у вас база данных вот
03:11:08
этот файлик не должен синхронизироваться
03:11:10
это что у вас будут в миграциях по идее
03:11:13
в базе данных на сервере не должно быть
03:11:15
вот эти штуки потренируйтесь на выходных
03:11:21
если удалить базу данных вот этот файлик
03:11:24
взять стереть то django создаст 0 новый
03:11:28
пустой и скажет вам ага я вижу тут кучу
03:11:32
миграций а
03:11:34
по заданных пустая и напишет сделайте
03:11:37
пожалуйста миграции вы примените
03:11:39
миграции миграции выполняться в новой
03:11:42
базой базе данных появятся все таблички
03:11:45
с x связями но без данных
03:11:52
вот так это сработает
03:11:55
игра
03:11:57
это про структуру таблиц не про их
03:11:59
начинку
03:12:01
миграции их можно в миграции написать
03:12:04
напихать еще и начинку но это отдельный
03:12:06
то когда топик по умолчанию миграции эта
03:12:09
про структуру что из себя представляет
03:12:12
табличка какие в ней колонки какого она
03:12:15
типа данных в миграциях нет что там
03:12:18
минск брест витебск этого миграция книг
03:12:22
это вы в процессе работы приложения
03:12:24
пойти данные там появляются либо
03:12:26
удаляются либо редактируется поэтому
03:12:29
если вы возьмете сейчас удалите
03:12:33
таблицу
03:12:34
skylight
03:12:37
django определит что у вас табличка
03:12:39
пустая есть миграции надо бы их
03:12:42
применить с этим тоже совсем можете
03:12:45
поэкспериментировать пока вы в самом
03:12:47
начале если что-то идет не так все это
03:12:49
удаляется и перри создается
03:12:56
записывать через шоу
03:12:58
ну можете через view но вот как бы идея
03:13:03
зайти в шоу и потренироваться с
03:13:05
менеджером работать с объектами
03:13:07
создавать их фильтровать оттуда удалять
03:13:11
вот эти все цели поиграться с римом
03:13:15
с базой данных потому что когда вы
03:13:18
натренируетесь с этим кремом вот он в
03:13:21
реальном приложении будет вот таким
03:13:22
образом применяться
03:13:27
так ну все расходимся
03:13:30
теперь команду print можно принц print
03:13:35
команда print она для отладки ну вот то
03:13:38
что вы пишите принтом вот
03:13:44
то что в принте
03:13:51
вожу нахожу
03:13:55
обновляю
03:13:57
вот оно здесь в консольки появляется
03:14:00
иногда удобно
03:14:01
там какие-то отладочную информацию
03:14:04
вылавливать именно вот здесь
03:14:08
все пока нет вопросов я пошел до
03:14:12
понедельника

Описание:

it-academy video

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Md-PT1-49-22_Котишевский Д_Комплексный курс по разработке веб-прил. на Python_14 Вебинар_07.07.2022"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.