Size: a a a

Django [ru] #STAY HOME

2019 January 14

IR

Ivan Rudenko in Django [ru] #STAY HOME
Alexandr Artemyev
Правильно тебе советуют туториалы. Там дальше будет сверки с джоином на базу. Для базы данных эта операция элементарна, у тебя должно быть очень много записей чтоб ты столкнулся с проблемами из-за этого.
А можно где-то почитать подробнее, как это работает?
источник

AC

Al Co in Django [ru] #STAY HOME
Ivan Rudenko
Слушайте, а может быть вы поясните мне заодно за отношения между моделями?
В общем, ситуация следующая, есть две модели, автор и публикация. У каждой публикации есть только один автор, у каждого автора много публикаций. В этой ситуации все туториалы и официальная джанговская документация хором советуют использовать поле```foreignKey``` в публикации. Но я не понимаю одного, предположим, я хочу показать пользователю все публикации одного автора. Сейчас я это делаю вот так
artworks = Artwork.objects.filter(author = artist)
. Но ведь это значит, что каждый раз приложение подгружает абсолютно все публикации (Artwork) и фильтрует их по нужному признаку. Мягко говоря, это явно не самое оптимальное решение. Как мне кажется, надо хранить список публикаций в классе автора, но... Я не нашел примеров, где это так реализовано. Возможно, я чего-то не понимаю, и под капотом это работает оптимальнее, чем я описал? Или же действительно надо добавить какой-нибудь ArrayField в класс автора, чтобы не грузить каждый раз все существующие публикации?
под капотом работает оптимальнее) джанго не достает все данные как вы описали. в джанго используются ленивые queryset
источник

AA

Alexandr Artemyev in Django [ru] #STAY HOME
Ivan Rudenko
А можно где-то почитать подробнее, как это работает?
Artwork.objects.filter(author = artist).query.__str__()
источник

AA

Alexandr Artemyev in Django [ru] #STAY HOME
Увидешь запрос какой в базу улетает
источник

AC

Al Co in Django [ru] #STAY HOME
Ivan Rudenko
Слушайте, а может быть вы поясните мне заодно за отношения между моделями?
В общем, ситуация следующая, есть две модели, автор и публикация. У каждой публикации есть только один автор, у каждого автора много публикаций. В этой ситуации все туториалы и официальная джанговская документация хором советуют использовать поле```foreignKey``` в публикации. Но я не понимаю одного, предположим, я хочу показать пользователю все публикации одного автора. Сейчас я это делаю вот так
artworks = Artwork.objects.filter(author = artist)
. Но ведь это значит, что каждый раз приложение подгружает абсолютно все публикации (Artwork) и фильтрует их по нужному признаку. Мягко говоря, это явно не самое оптимальное решение. Как мне кажется, надо хранить список публикаций в классе автора, но... Я не нашел примеров, где это так реализовано. Возможно, я чего-то не понимаю, и под капотом это работает оптимальнее, чем я описал? Или же действительно надо добавить какой-нибудь ArrayField в класс автора, чтобы не грузить каждый раз все существующие публикации?
https://djbook.ru/rel1.8/topics/db/queries.html#querysets-are-lazy
тут довольно подробно расписано
источник

AA

Alexandr Artemyev in Django [ru] #STAY HOME
Al Co
https://djbook.ru/rel1.8/topics/db/queries.html#querysets-are-lazy
тут довольно подробно расписано
То что кверисеты ленивые влияет только до того момента пока ты не начинаешь обращаться к данным. Человек похоже больше про структуру таблицу интересуется, раз говорит о арейфилде
источник

AC

Al Co in Django [ru] #STAY HOME
Alexandr Artemyev
То что кверисеты ленивые влияет только до того момента пока ты не начинаешь обращаться к данным. Человек похоже больше про структуру таблицу интересуется, раз говорит о арейфилде
Да не, как раз про загрузку из базы имхо, а грузить их в ArrayField мне кажется ничем особо не поможет)
источник

AA

Alexandr Artemyev in Django [ru] #STAY HOME
Ivan Rudenko
А можно где-то почитать подробнее, как это работает?
Суть больше в том что использование foreignkey создаст базу тебе в таком виде, в котором ты под эту задачу ее рисовал бы без фреймворков
источник

IR

Ivan Rudenko in Django [ru] #STAY HOME
Да, про это я и спрашивал
источник

AA

Alexandr Artemyev in Django [ru] #STAY HOME
Al Co
Да не, как раз про загрузку из базы имхо, а грузить их в ArrayField мне кажется ничем особо не поможет)
У постгриса есть арейфилд прям на уровне базы, но он медленнее будет чем внешний ключ
источник

AC

Al Co in Django [ru] #STAY HOME
Alexandr Artemyev
У постгриса есть арейфилд прям на уровне базы, но он медленнее будет чем внешний ключ
Думаю нет смысла это обсуждать в данном контексте)
источник

I

Il`ya (Marshal) in Django [ru] #STAY HOME
Всем привет. Как красиво перекинуть генерацию сайтмапы на таску celery?
источник

IR

Ivan Rudenko in Django [ru] #STAY HOME
Так где-то под капотом у объекта автора появляется поле, в котором хранятся его публикации? Или смысл в том, что обычные запросы к бд работают так хорошо, что это просто не нужно? Из статьи я пока извлек только то, что приложение отправляет как можно меньше запросов, стремясь объединить их в один
источник

f

f1nnix in Django [ru] #STAY HOME
Гайз, можно ли использовать Generic editing views (https://docs.djangoproject.com/en/2.1/ref/class-based-views/generic-editing/#generic-editing-views) для генерации вьюхи от ListView, которая будет на этой же самой странице еще и рендерить (и процессить форму)? Визуально, чтобы проще было понять:

|--------------|
| |BookForm|   |
| |--------|   |
|              |
| BookListView |
| ------------ |
| 1. ...       |
| 2. ...       |
| 3. etc       |
|--------------|


Я вижу в примерах отдельные вьюзи типа django.views.generic.edit.CreateView, но как использовать их вместе на одной странице что-то сходу не соображу.

Спасибо
источник

IF

Invisible Fox in Django [ru] #STAY HOME
Django girls
источник

AC

Al Co in Django [ru] #STAY HOME
Ivan Rudenko
Так где-то под капотом у объекта автора появляется поле, в котором хранятся его публикации? Или смысл в том, что обычные запросы к бд работают так хорошо, что это просто не нужно? Из статьи я пока извлек только то, что приложение отправляет как можно меньше запросов, стремясь объединить их в один
Преждевременная оптимизация - корень всего зла. На самом деле джанго орм работает достаточно быстро, чтобы не думать о том как  оптимизировать подобные запросы. Если у автора будет огромное количество постов и база будет их долго выгружать, то имеет смысл кэшировать их в какой-нибудь redis)
источник

AC

Al Co in Django [ru] #STAY HOME
Il`ya (Marshal)
Всем привет. Как красиво перекинуть генерацию сайтмапы на таску celery?
А первый вопрос. Тут лучше сначала понять какие джанго отправляет запросы, выше способ скидывали уже как посмотреть, либо django logger включить в debug
источник

А

Алексей in Django [ru] #STAY HOME
В чем может быть проблема, ловлю сигнал post_save, по нему вызываю celery task, внутри таска опять же этот же объект запрашиваю, id его уже созданного я передаю( принтом выводится, что оно есть уже на всякий случай), он не видит эту запись, в базе она есть
источник

A

Ahmed in Django [ru] #STAY HOME
Ребята, кто-нибудь знает удобную библиотеку которая позволяет легко добавлять пачками файлы в админке?
источник

A

Ahmed in Django [ru] #STAY HOME
Имею ввиду для поле ManyToMany
источник