#21. Сортировка, изменение и удаление записей | Уроки по Django 4

แชร์
ฝัง
  • เผยแพร่เมื่อ 25 พ.ย. 2024

ความคิดเห็น • 27

  • @johnmazepa
    @johnmazepa ปีที่แล้ว +12

    внимание! мои пять копеек, без которых - никуда.
    3:43 - Сергей оговорился. Все наоборот:
    order_by("title")
    ASC (ascending) = сортировка по возрастанию
    order_by("-title")
    DESC (descending) = сортировка по убыванию.
    Как я понимаю, для сортировки строк по алфавиту сравниваются порядковые номера(индексы), которые соответствуют их буквам в какой-то там таблице. Чем раньше буква расположена в алфавите, тем меньше будет её порядковый номер(индекс).
    То есть А

  • @ЗНАКОМЫЙСВАРЩИК
    @ЗНАКОМЫЙСВАРЩИК ปีที่แล้ว +1

    Надо же, поставил на паузу и поменял на 1ку публикации сам)))

  • @СквозьГоризонт-м7ъ
    @СквозьГоризонт-м7ъ หลายเดือนก่อน +1

    Интересно как на уровне Django происходит трансформация атрибутов объекта класса Women: title, content, time_create, time_update, которые сами являются объектами классов Char_Field, TextField, DataTimeField, в "поля записи". Я понимаю что они просто записываются SQL-запросом в таблицу, но до этого мы же взаимодействуем в терминале с объектами Women, где они, эти атрибуты, по сути, являются просто переменными в которые можно записывать текст: title = "Кира Найтли". То-есть, получается что в процессе работы в терминале, например, при команде Women.objects.get(pk=2) возвращается трансформированный объект Women, где атрибуты title, content, time_create и т.д. становятся просто переменными.🤔

  • @МаксимНовиков-ь4ц
    @МаксимНовиков-ь4ц 8 หลายเดือนก่อน +1

    Есть ещё очень полезные: Woman.objects.last() и Woman.objects.first() для получения последней и первой записи соответственно.

  • @flow530
    @flow530 ปีที่แล้ว +1

    Спасибо

  • @TelevizorZal
    @TelevizorZal 5 หลายเดือนก่อน +1

    У меня не сортирует в обратном порядке 6 мин 30 сек. Помогла перезагрузка. Слишком часто глюки у Джанго. Начало напрягать.

  • @ДмитрийПавленко-ш5в
    @ДмитрийПавленко-ш5в ปีที่แล้ว +2

    Отличный контент, продолжайте. Получается, чтобы изменить одну запись, всё равно нужно использовать filter? Полученную get запись никак не получится изменить? Будет ли обновление плей-листа по DRF?

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว

      Спасибо! Да, но если прописать filter(...).update(...), то сформируется один запрос на обновление.

    • @АлексейАлексеев-ц8х9т
      @АлексейАлексеев-ц8х9т ปีที่แล้ว +1

      Ну почему же? Через get получаем запись, делаем на нее ссылку переменной и уже через переменную меняем её атрибуты (как с марго робби), главное не забыть потом сделать save()

    • @selfedu_rus
      @selfedu_rus  ปีที่แล้ว +2

      @@АлексейАлексеев-ц8х9т тогда будет два SQL-запроса: на получение и на изменение

    • @АлексейАлексеев-ц8х9т
      @АлексейАлексеев-ц8х9т ปีที่แล้ว +1

      @@selfedu_rus согласен, количество обращений к базе лучше сократить до минимума

  • @ibrahimoglu
    @ibrahimoglu ปีที่แล้ว +1

    👍

  • @armstrong2790
    @armstrong2790 10 หลายเดือนก่อน +1

    Большое спасибо за урок, параллельно с вашим проектом сайта веду свой собственный для отработки знаний, у меня в нем есть некий раздел с рейтингом автомобилей и я планирую их в будущем выгружать из БД. У меня есть спарсенный файл в формате JSON с нужными данными, как мне можно его вставить в нужную таблицу БД автоматически, чтобы её не заполнять ручками? Куда копать? Буду благодарен за ответ

    • @lama_instagrama1431
      @lama_instagrama1431 9 หลายเดือนก่อน

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

    • @armstrong2790
      @armstrong2790 9 หลายเดือนก่อน

      @@lama_instagrama1431 Ну это понятно, хочется узнать, есть ли уже готовые решения

    • @lama_instagrama1431
      @lama_instagrama1431 9 หลายเดือนก่อน

      @@armstrong2790 не знаю, но мне тоже интересен данный вопрос

    • @МаксимНовиков-ь4ц
      @МаксимНовиков-ь4ц 8 หลายเดือนก่อน

      Используй команды джанго

  • @johnmazepa
    @johnmazepa ปีที่แล้ว +1

    то есть, чтобы изменить ОДНУ запись, нужно использовать фильтр следующим образом:
    Women.objects.filter(pk__gt=1, pk__lt=3).update(is_published=0)
    ?
    или все же существуют способы попроще?

    • @АлексейАлексеев-ц8х9т
      @АлексейАлексеев-ц8х9т ปีที่แล้ว +2

      w = Women.get(pk=1)
      w.is_published = 0
      w.save()

    • @johnmazepa
      @johnmazepa ปีที่แล้ว

      @@АлексейАлексеев-ц8х9т , действительно))
      спасибо

    • @АлексейАлексеев-ц8х9т
      @АлексейАлексеев-ц8х9т ปีที่แล้ว

      @@johnmazepa пожалуйста, но Сергей сообщил, что этот способ не очень хорош, тк происходит два запроса к бд вместо одного

    • @ДмитрийПавленко-ш5в
      @ДмитрийПавленко-ш5в ปีที่แล้ว +4

      Можно в фильтре указать явно нужную строку `Women.objects.filter(pk=2).update(is_published=0)`

  • @showrun4747
    @showrun4747 ปีที่แล้ว +1

    а почему вместо такого долгого описания индексов не указывать сразу типа: latitude = models.FloatField(blank=True, db_index=True)

    • @shinigami_yokoso
      @shinigami_yokoso ปีที่แล้ว

      Индексы разные бывают, например primary key, unique, индексы для поиска текста, на сортируемые поля, нужно смотреть в документацию, как какой индекс в джанго, да и ваш способ не может позволить указать индекс по 2-3 полям сразу(так называемый составной индекс)

  • @Developer_python_
    @Developer_python_ ปีที่แล้ว +2

    use get_object_or_404 instead get