#23. Создание пользовательского менеджера модели | Уроки по Django 4

Поделиться
HTML-код
  • Опубликовано: 31 янв 2025

Комментарии • 46

  • @АлексейДёмин-н6ч
    @АлексейДёмин-н6ч Год назад +9

    Спасибо за урок!

  • @andredru4278
    @andredru4278 Год назад +7

    Спасибо. Очень удобный инструмент.

  • @Делакруа́-ы9щ
    @Делакруа́-ы9щ Год назад +2

    5:05 - страница "читать пост" 5:16 - ей соответствует не шаблон index.html a post.html в котором выводятся посты {{post.content|linebreaks}}

  • @Just_coding-always
    @Just_coding-always Год назад +1

    Спасибо ты крут

  • @АнатолийСитников-х3г

    Спасибо!

  • @lama_instagrama1431
    @lama_instagrama1431 11 месяцев назад +3

    Заметил интересную вещь. Если в нашей модели объявить кастомный менеджер перед стандартным objects, то это меняет поведение функции get_object_or_404(). То есть, в нашей модели менеджеры определены так:
    published = PublishedModel()
    objects = models.Manager()
    Функция get_object_or_404(), как я понял, использует первый менеджер в нашей модели. Я пытался с помощью этой функции получить объект, у которого поле is_published = False, но так как наш кастомный менеджер отсеивает все такие объекты, то я всегда получал ошибку 404. Долго не мог понять в чем проблема. Лишь поменяв их местами мне удалось достичь желаемого результата.
    Напишите, пожалуйста, если я не прав.

    • @andriidmytriiev9553
      @andriidmytriiev9553 8 месяцев назад

      Вы правы. Функция get_object_or_404(klass) вызывает ф-цию _get_queryset(klass), где klass может быть Model, Manager или уже готовый QuerySet. Если klass это экземпляр класса Model , то в момент инициализации у него автоматически создается параметр _default_manager и если первым определить published, а в консоли выполнить Women._default_manager, то увидим результат .

  • @ra1ngts
    @ra1ngts 10 месяцев назад +1

    Вопрос про def queryset: Насколько я помню раньше можно было определить этот метод в модели и это работало, какой профит от определения его в менеджере ? Может я чего-то не понял.

  • @ibrahimoglu
    @ibrahimoglu Год назад +2

    👍

  • @KamilRuziyev
    @KamilRuziyev Год назад +1

    изменения в контенте на минуте 04:40, я хотел сделать сам. копирую и вставляю в Dbeaver into the field content, into the row of Angelina Jolie несколько абзацев контента. Но почему-то только первый абзац вставляется. Потом я каждый абзац отдельно вставляю в ту же ячейку, руками добавляя между ними
    . все равно не помогает. Все равно на странице post у меня весь текст идет в одном абзаце. Как можно добавить несколько абзацев в БД, и что между абзацами прописать, чтобы linebreaks учитывал абзацы и отображал контент правильно?

    • @KamilRuziyev
      @KamilRuziyev Год назад

      Я сделал update через django ORM, используя тройные кавычки. потом сделал save() и все сработало.

  • @НиколайПономаренко-в9н
    @НиколайПономаренко-в9н 9 месяцев назад +1

    у меня БД не показывает информацию которая на 11 мин, я с github взял и скопировал файл склайт3 так нельзя наверное было делать? надо каждый вручную набирать?

  • @Делакруа́-ы9щ
    @Делакруа́-ы9щ Год назад +1

    Откуда у классу Status появилось поле choises, если оно явно не определено? Давайте обратимся к документации, там же все понятно и доступно))После долгого поиска можно найти такое предложение:
    В классы перечисления добавлен ряд пользовательских свойств - .choices, .labels, .valuesи .names-, чтобы упростить доступ к спискам этих отдельных частей перечисления. Используйте .choices в качестве подходящего значения для передачи choices в определении поля.

    • @ЗНАКОМЫЙСВАРЩИК
      @ЗНАКОМЫЙСВАРЩИК Год назад

      Мне документация вообще не заходит, смотрю в книгу вижу фигу.

    • @loner7222
      @loner7222 9 месяцев назад

      @@ЗНАКОМЫЙСВАРЩИК ахах, та же фигня, иногда что то понимаю из неё, но обычно после её прочтения, идёшь в поиск браузера))

  • @cryptokrupt
    @cryptokrupt Год назад +1

    Подскажите, на степике пополнение курса уроками закончено или будут ещё уроки?

  • @ChelovekPavuk555
    @ChelovekPavuk555 Год назад +1

    Сергей, записи моделей создаются с неправильным временем отстает на три часа, поставил TIME_ZONE = 'Europe/Moscow' всё равно новые записи по прежнему отстают на три часа, гугл и форумы не помогают, как поставить Московское время ?

    • @selfedu_rus
      @selfedu_rus  Год назад

      здесь ответ: ru.stackoverflow.com/questions/1185314/Как-получить-правильное-московское-время-python-django

    • @selfedu_rus
      @selfedu_rus  Год назад

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

  • @TheSuchov
    @TheSuchov Год назад +1

    IntegerChoices class как то криво отображается в админке. При наличии строки
    list_editable = ('is_published',)
    в независимости от значения is_published демонстрируется поле "черновик". Если строку закоментировать, показывает значение соответствующее is_published. Тоже самое и при редактировании конкретной записи.

    • @selfedu_rus
      @selfedu_rus  Год назад +1

      исправление будет дальше, когда станем рассматривать админку

  • @kemp1l315
    @kemp1l315 Год назад +1

    А можно вопрос, этот курс стоит смотреть после django python или это разные курсы?

    • @selfedu_rus
      @selfedu_rus  Год назад

      стоит, это немного другой и дополненный курс

    • @kemp1l315
      @kemp1l315 Год назад

      @@selfedu_rus спасибо

  • @НиколайПономаренко-в9н
    @НиколайПономаренко-в9н 9 месяцев назад +1

    а где инфа про актрис я что то не нашёл еще и время на такое трачу

    • @selfedu_rus
      @selfedu_rus  9 месяцев назад

      БД на гите (ссылка под видео на архив с проектом)

  • @tercesterces1126
    @tercesterces1126 9 месяцев назад +2

    Не розумію, для чого створювати менеджер моделі якщо класичний ORM доступний та зрозумілий. Мені здається це функціонал для продвинутих, але точно не для новачків. Поки буду використовувати запити через класичний ORM, а згодом перейду на Model Manager.
    Дякую за урок.

  • @borisjizdan6299
    @borisjizdan6299 5 месяцев назад +2

    Сергей здравствуйте. После того как я сделал миграцию вместо
    Applying women.0004_alter_women_is_published … OK
    мне выдало
    No migrations to apply.
    После этого я удалил файл миграции 0004 и ещё раз повторил процедуру, но результат был тот же.
    После этого я загрузил копию проекта, который я сохранил до момента миграции, выполнил команды миграции но результат остался тот же.
    Что это может значить? и как это может повлиять, если я продолжу делать проект не разобравшись с этой проблемой?

    • @selfedu_rus
      @selfedu_rus  5 месяцев назад +1

      Это вопрос в ТГ-канал по Django (ссылка под видео).

  • @vilag_programmer
    @vilag_programmer Год назад +1

    Подскажите, templates можно использовать с drf и как если можно?

    • @selfedu_rus
      @selfedu_rus  Год назад

      Зачем? DRF отправляет JSON-данные (как правило), для чего ему шаблон?

    • @vilag_programmer
      @vilag_programmer Год назад

      @@selfedu_rus что б упростить жизнь, быть может. Я не совсем понимаю разницу между ванильным джанго и дрф.

  • @dzhegutin9876
    @dzhegutin9876 Год назад

    Лишний урок!

  • @igors3977
    @igors3977 Год назад +1

    не могу не задать этот вопрос.. Почему woman говорится "вИмен"?

    • @Chel1k7
      @Chel1k7 Год назад +4

      Множественное число women читается как вимен

    • @marat_shaydulin
      @marat_shaydulin Год назад

      @@igors3977 "women", а не "woman"

    • @0kipullup0
      @0kipullup0 Год назад

      woman - УОмэн
      women - УИмэн

  • @wasd1338
    @wasd1338 Год назад +3

    Очень странно, что для поля, у которого мы четко указываем что оно булевого типа, передавая значение этого поля как аргумент в функцию или метод мы не используем сами булевы значения, а используем числа, чтобы потом понять что это "не гигиенично" и навертеть сверху еще какие-то абстракции. ИМХО если значение этого поля может выходить за пределы 0 и 1, т.е. поле IntegerField, тогда логично эти перечисления делать и заменять непонятные цифры понятными словами. но зачем заменять понятные булевы значения непонятными цифрами чтобы потом заменить их снова понятными словами - большой вопрос

    • @ra1ngts
      @ra1ngts 9 месяцев назад

      А еще если зайти в админку везде даже где фото к примеру не опубликовано написано опубликовано, получилась ерунда какае-то, я вышел из положения переопределив integerchoice на Boolenfield, присовил True и False, в админке сразу все заработло как надо ! Я так понимаю это чисто для лучшего понмиания кода...не более того, наверно можно даже и былобы лучше не юзать впринцыпе этот менеджер.

    • @ra1ngts
      @ra1ngts 9 месяцев назад

      PUBLISHED = True
      NOT_PUBLISHED = False
      Сделал вот так:
      STATUS = {
      'YES': True,
      'NO': False
      }
      published = models.BooleanField(default=STATUS['NO'], verbose_name='Публикация') - и это прекрасно работает

  • @Developer_python_
    @Developer_python_ Год назад

    Нарешті пішло щось цікавіше)

  • @ИванБыков-д8х
    @ИванБыков-д8х Год назад

    Момент с заполнением базы данных как-то слабовато описан

  • @donlinoleum831
    @donlinoleum831 Год назад +1

    а говорили, в питоне нет enum. Врут))

    • @UladzimirShytsko
      @UladzimirShytsko Год назад +1

      Да ладно. Кто такое говорит? Ка бы уже лет 10 в питоне есть перечисления