Работа с Django ORM

  Рет қаралды 1,748

David Dobryakov

David Dobryakov

Күн бұрын

Пікірлер: 17
@zakchips
@zakchips 4 жыл бұрын
26:45 хороший момент про менеджеров.
@dobryakov
@dobryakov 4 жыл бұрын
Спасибо! Старался привести хорошие примеры!
@CloZ1e
@CloZ1e 2 жыл бұрын
18:55 жаль Фёдора, хороший мужик был
@dengarkavenko7693
@dengarkavenko7693 4 жыл бұрын
Спасибо за видео, годный видос
@OxoTHuK13
@OxoTHuK13 4 жыл бұрын
Давид, привет! Есть таблица заказов. Через внешний ключ к каждому экземпляру заказа цепляется таблица со статусами заказа. Таблицу сделал отдельную, т.к. необходимо вести историю изменений каждого заказа. Вопрос: как написать запрос для вывода списка заказов с определенным статусом, например равным '1'? Т.е. организовать некий фильтр. На ум приходит такой код: def orders_list(request): orders = Order.objects.filter(orderstatus__status=1) return render(request, 'orders_list.html', context={'orders': orders}) Но проблема в том, что запрос возвращает все записи в которых хотя бы раз был статус, равный '1', а надо, чтоб брался только последний статус для каждого заказа и попадал в выборку. Упрощенный код модели Order и OrderStatus ниже: class Order(model.Model): customer = models.CharField('Клиент', max_length=200) product = models.CharField('Товар', max_length=200) ..... class OrderStatus(models.Model): STATUSES_LIST = ( ('1', 'Создан'), ('2', 'В обработке'), ('3', 'Отправлен'), ) order = models.ForeignKey(Order, on_delete=models.CASCADE) status = models.CharField(max_length=1, choices=STATUSES_LIST, default=1) status_date = models.DateTimeField('Дата изменения заказа')
@dobryakov
@dobryakov 4 жыл бұрын
Я бы посмотрел в сторону order_by и аннотаций. docs.djangoproject.com/en/3.1/topics/db/aggregation/
@OxoTHuK13
@OxoTHuK13 4 жыл бұрын
@@dobryakov спасибо за наводку! Прочитал про *annotate*, не совсем понял, зачем использовать *order_by*. Затем еще раз пересмотрел твое видео и просветление пришло на 14:06. Я заметил, что аггрегатор добавляет в кверисет дополнительное поле. В этом и был ключик к решению моей проблемы. Если интересно кому-то, то вот код: orders = Order.objects.annotate(Max('orderstatus__status')).filter(orderstatus__status__max=1) # orderstatus__status__max=1 - это как раз поле, которое добавил аггрегатор Max
@dobryakov
@dobryakov 4 жыл бұрын
Поздравляю!
@romanmed9035
@romanmed9035 28 күн бұрын
примеры в консоли выглядят совсем не так как в файле и непонятно к чему что лепить. вероятно тому кто понимает конечно и так все понятно, а вот тому кто не понимает, ну совсем не понятно так.
@zakchips
@zakchips 4 жыл бұрын
Какое то время назад по просторам ИТ рынка бродил несчастный рекрутер, к искал мастра в SQLAlchemе на джанго проекте. Я в детали не вдавалась, однако задумалась, что было причиной имплементировать сторонний toolkit , а не юзать built-in ORM. Есть ли очевидные преимущества в этом? Спасибо.
@dobryakov
@dobryakov 4 жыл бұрын
В Django проекте точно нет смысла не использовать Django ORM. SQLAlchemy хорош для других фреймворков, таких как Flask или Bottle. Для асинхронных тоже можно его использовать, разумеется
@zakchips
@zakchips 4 жыл бұрын
@@dobryakov спасибо.
@rushen8148
@rushen8148 4 жыл бұрын
Django orm как и любой orm медленный и не позволяет писать сложных запросов, есть только возможность писать сырой sql. А sqlalchemy предоставляет query builder, позволяющий писать любые запросы в виде питон кода, что намного удобнее и лучше в поддержке, чем писать сырой sql.
@dobryakov
@dobryakov 4 жыл бұрын
@@rushen8148 коротко и по делу, спасибо!
@dd-pe5dp
@dd-pe5dp 3 жыл бұрын
зачем показывать примеры в shell, если в реальности данные выводят на сайт??? пишу тоже самое в indexhtml и хрен
@dobryakov
@dobryakov 3 жыл бұрын
Потому что речь в ролике исключительно о работе с django orm, а не о работе с представлениями и темплейтами Официальная документация вам в помощь: docs.djangoproject.com/en/3.2/topics/templates/ docs.djangoproject.com/en/3.2/topics/class-based-views/
@eurweb
@eurweb 3 жыл бұрын
кто не знает ОРМ, погугит, желательно только по теме
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН
IL'HAN - Qalqam | Official Music Video
03:17
Ilhan Ihsanov
Рет қаралды 700 М.
Quando eu quero Sushi (sem desperdiçar) 🍣
00:26
Los Wagners
Рет қаралды 15 МЛН
ПРОГРАММИСТЫ! ВСЕ СЮДА...
14:25
Winderton
Рет қаралды 347 М.
Бекенд на Django, Урок 3: Filters, Search, Ordering
29:31
Senior Pomidor Developer
Рет қаралды 30 М.
Леон киллер и Оля Полякова 😹
00:42
Канал Смеха
Рет қаралды 4,7 МЛН