Заметил интересную вещь. Если в нашей модели объявить кастомный менеджер перед стандартным objects, то это меняет поведение функции get_object_or_404(). То есть, в нашей модели менеджеры определены так: published = PublishedModel() objects = models.Manager() Функция get_object_or_404(), как я понял, использует первый менеджер в нашей модели. Я пытался с помощью этой функции получить объект, у которого поле is_published = False, но так как наш кастомный менеджер отсеивает все такие объекты, то я всегда получал ошибку 404. Долго не мог понять в чем проблема. Лишь поменяв их местами мне удалось достичь желаемого результата. Напишите, пожалуйста, если я не прав.
Вы правы. Функция get_object_or_404(klass) вызывает ф-цию _get_queryset(klass), где klass может быть Model, Manager или уже готовый QuerySet. Если klass это экземпляр класса Model , то в момент инициализации у него автоматически создается параметр _default_manager и если первым определить published, а в консоли выполнить Women._default_manager, то увидим результат .
Вопрос про def queryset: Насколько я помню раньше можно было определить этот метод в модели и это работало, какой профит от определения его в менеджере ? Может я чего-то не понял.
изменения в контенте на минуте 04:40, я хотел сделать сам. копирую и вставляю в Dbeaver into the field content, into the row of Angelina Jolie несколько абзацев контента. Но почему-то только первый абзац вставляется. Потом я каждый абзац отдельно вставляю в ту же ячейку, руками добавляя между ними . все равно не помогает. Все равно на странице post у меня весь текст идет в одном абзаце. Как можно добавить несколько абзацев в БД, и что между абзацами прописать, чтобы linebreaks учитывал абзацы и отображал контент правильно?
у меня БД не показывает информацию которая на 11 мин, я с github взял и скопировал файл склайт3 так нельзя наверное было делать? надо каждый вручную набирать?
Откуда у классу Status появилось поле choises, если оно явно не определено? Давайте обратимся к документации, там же все понятно и доступно))После долгого поиска можно найти такое предложение: В классы перечисления добавлен ряд пользовательских свойств - .choices, .labels, .valuesи .names-, чтобы упростить доступ к спискам этих отдельных частей перечисления. Используйте .choices в качестве подходящего значения для передачи choices в определении поля.
Сергей, записи моделей создаются с неправильным временем отстает на три часа, поставил TIME_ZONE = 'Europe/Moscow' всё равно новые записи по прежнему отстают на три часа, гугл и форумы не помогают, как поставить Московское время ?
IntegerChoices class как то криво отображается в админке. При наличии строки list_editable = ('is_published',) в независимости от значения is_published демонстрируется поле "черновик". Если строку закоментировать, показывает значение соответствующее is_published. Тоже самое и при редактировании конкретной записи.
Не розумію, для чого створювати менеджер моделі якщо класичний ORM доступний та зрозумілий. Мені здається це функціонал для продвинутих, але точно не для новачків. Поки буду використовувати запити через класичний ORM, а згодом перейду на Model Manager. Дякую за урок.
Сергей здравствуйте. После того как я сделал миграцию вместо Applying women.0004_alter_women_is_published … OK мне выдало No migrations to apply. После этого я удалил файл миграции 0004 и ещё раз повторил процедуру, но результат был тот же. После этого я загрузил копию проекта, который я сохранил до момента миграции, выполнил команды миграции но результат остался тот же. Что это может значить? и как это может повлиять, если я продолжу делать проект не разобравшись с этой проблемой?
Очень странно, что для поля, у которого мы четко указываем что оно булевого типа, передавая значение этого поля как аргумент в функцию или метод мы не используем сами булевы значения, а используем числа, чтобы потом понять что это "не гигиенично" и навертеть сверху еще какие-то абстракции. ИМХО если значение этого поля может выходить за пределы 0 и 1, т.е. поле IntegerField, тогда логично эти перечисления делать и заменять непонятные цифры понятными словами. но зачем заменять понятные булевы значения непонятными цифрами чтобы потом заменить их снова понятными словами - большой вопрос
А еще если зайти в админку везде даже где фото к примеру не опубликовано написано опубликовано, получилась ерунда какае-то, я вышел из положения переопределив integerchoice на Boolenfield, присовил True и False, в админке сразу все заработло как надо ! Я так понимаю это чисто для лучшего понмиания кода...не более того, наверно можно даже и былобы лучше не юзать впринцыпе этот менеджер.
PUBLISHED = True NOT_PUBLISHED = False Сделал вот так: STATUS = { 'YES': True, 'NO': False } published = models.BooleanField(default=STATUS['NO'], verbose_name='Публикация') - и это прекрасно работает
Спасибо за урок!
Спасибо. Очень удобный инструмент.
5:05 - страница "читать пост" 5:16 - ей соответствует не шаблон index.html a post.html в котором выводятся посты {{post.content|linebreaks}}
Все верно, я убрал с индекса, чтобы не дублировало.
Спасибо ты крут
Спасибо!
Заметил интересную вещь. Если в нашей модели объявить кастомный менеджер перед стандартным objects, то это меняет поведение функции get_object_or_404(). То есть, в нашей модели менеджеры определены так:
published = PublishedModel()
objects = models.Manager()
Функция get_object_or_404(), как я понял, использует первый менеджер в нашей модели. Я пытался с помощью этой функции получить объект, у которого поле is_published = False, но так как наш кастомный менеджер отсеивает все такие объекты, то я всегда получал ошибку 404. Долго не мог понять в чем проблема. Лишь поменяв их местами мне удалось достичь желаемого результата.
Напишите, пожалуйста, если я не прав.
Вы правы. Функция get_object_or_404(klass) вызывает ф-цию _get_queryset(klass), где klass может быть Model, Manager или уже готовый QuerySet. Если klass это экземпляр класса Model , то в момент инициализации у него автоматически создается параметр _default_manager и если первым определить published, а в консоли выполнить Women._default_manager, то увидим результат .
Вопрос про def queryset: Насколько я помню раньше можно было определить этот метод в модели и это работало, какой профит от определения его в менеджере ? Может я чего-то не понял.
👍
изменения в контенте на минуте 04:40, я хотел сделать сам. копирую и вставляю в Dbeaver into the field content, into the row of Angelina Jolie несколько абзацев контента. Но почему-то только первый абзац вставляется. Потом я каждый абзац отдельно вставляю в ту же ячейку, руками добавляя между ними
. все равно не помогает. Все равно на странице post у меня весь текст идет в одном абзаце. Как можно добавить несколько абзацев в БД, и что между абзацами прописать, чтобы linebreaks учитывал абзацы и отображал контент правильно?
Я сделал update через django ORM, используя тройные кавычки. потом сделал save() и все сработало.
у меня БД не показывает информацию которая на 11 мин, я с github взял и скопировал файл склайт3 так нельзя наверное было делать? надо каждый вручную набирать?
Откуда у классу Status появилось поле choises, если оно явно не определено? Давайте обратимся к документации, там же все понятно и доступно))После долгого поиска можно найти такое предложение:
В классы перечисления добавлен ряд пользовательских свойств - .choices, .labels, .valuesи .names-, чтобы упростить доступ к спискам этих отдельных частей перечисления. Используйте .choices в качестве подходящего значения для передачи choices в определении поля.
Мне документация вообще не заходит, смотрю в книгу вижу фигу.
@@ЗНАКОМЫЙСВАРЩИК ахах, та же фигня, иногда что то понимаю из неё, но обычно после её прочтения, идёшь в поиск браузера))
Подскажите, на степике пополнение курса уроками закончено или будут ещё уроки?
да, пока завершил
Сергей, записи моделей создаются с неправильным временем отстает на три часа, поставил TIME_ZONE = 'Europe/Moscow' всё равно новые записи по прежнему отстают на три часа, гугл и форумы не помогают, как поставить Московское время ?
здесь ответ: ru.stackoverflow.com/questions/1185314/Как-получить-правильное-московское-время-python-django
не забудьте, что на сервере также должно быть московское время
IntegerChoices class как то криво отображается в админке. При наличии строки
list_editable = ('is_published',)
в независимости от значения is_published демонстрируется поле "черновик". Если строку закоментировать, показывает значение соответствующее is_published. Тоже самое и при редактировании конкретной записи.
исправление будет дальше, когда станем рассматривать админку
А можно вопрос, этот курс стоит смотреть после django python или это разные курсы?
стоит, это немного другой и дополненный курс
@@selfedu_rus спасибо
а где инфа про актрис я что то не нашёл еще и время на такое трачу
БД на гите (ссылка под видео на архив с проектом)
Не розумію, для чого створювати менеджер моделі якщо класичний ORM доступний та зрозумілий. Мені здається це функціонал для продвинутих, але точно не для новачків. Поки буду використовувати запити через класичний ORM, а згодом перейду на Model Manager.
Дякую за урок.
Сергей здравствуйте. После того как я сделал миграцию вместо
Applying women.0004_alter_women_is_published … OK
мне выдало
No migrations to apply.
После этого я удалил файл миграции 0004 и ещё раз повторил процедуру, но результат был тот же.
После этого я загрузил копию проекта, который я сохранил до момента миграции, выполнил команды миграции но результат остался тот же.
Что это может значить? и как это может повлиять, если я продолжу делать проект не разобравшись с этой проблемой?
Это вопрос в ТГ-канал по Django (ссылка под видео).
Подскажите, templates можно использовать с drf и как если можно?
Зачем? DRF отправляет JSON-данные (как правило), для чего ему шаблон?
@@selfedu_rus что б упростить жизнь, быть может. Я не совсем понимаю разницу между ванильным джанго и дрф.
Лишний урок!
не могу не задать этот вопрос.. Почему woman говорится "вИмен"?
Множественное число women читается как вимен
@@igors3977 "women", а не "woman"
woman - УОмэн
women - УИмэн
Очень странно, что для поля, у которого мы четко указываем что оно булевого типа, передавая значение этого поля как аргумент в функцию или метод мы не используем сами булевы значения, а используем числа, чтобы потом понять что это "не гигиенично" и навертеть сверху еще какие-то абстракции. ИМХО если значение этого поля может выходить за пределы 0 и 1, т.е. поле IntegerField, тогда логично эти перечисления делать и заменять непонятные цифры понятными словами. но зачем заменять понятные булевы значения непонятными цифрами чтобы потом заменить их снова понятными словами - большой вопрос
А еще если зайти в админку везде даже где фото к примеру не опубликовано написано опубликовано, получилась ерунда какае-то, я вышел из положения переопределив integerchoice на Boolenfield, присовил True и False, в админке сразу все заработло как надо ! Я так понимаю это чисто для лучшего понмиания кода...не более того, наверно можно даже и былобы лучше не юзать впринцыпе этот менеджер.
PUBLISHED = True
NOT_PUBLISHED = False
Сделал вот так:
STATUS = {
'YES': True,
'NO': False
}
published = models.BooleanField(default=STATUS['NO'], verbose_name='Публикация') - и это прекрасно работает
Нарешті пішло щось цікавіше)
Момент с заполнением базы данных как-то слабовато описан
а говорили, в питоне нет enum. Врут))
Да ладно. Кто такое говорит? Ка бы уже лет 10 в питоне есть перечисления