Size: a a a

Django [ru] #STAY HOME

2020 April 26

AG

Artem Gubatenko in Django [ru] #STAY HOME
Your friend
Еще вопрос, дорогие друзья. Допустим у меня есть две модельки юзера, которые наследуются от абстракт юзера - студент и организация. Теперь я создаю модельку поста, но создателем поста может быть и организация, и юзер. Получается создателем будет абстракт юзер?
https://docs.djangoproject.com/en/3.0/ref/contrib/contenttypes/#generic-relations
можешь привязывать или студента, или организацию
источник

Y

Your friend in Django [ru] #STAY HOME
Artem Gubatenko
https://docs.djangoproject.com/en/3.0/ref/contrib/contenttypes/#generic-relations
можешь привязывать или студента, или организацию
а если оба могут эту функцию выполнять? как выйти из этой ситуации
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Your friend
а если оба могут эту функцию выполнять? как выйти из этой ситуации
не понял
если привязать нужно сразу обоих?
источник

Y

Your friend in Django [ru] #STAY HOME
Artem Gubatenko
не понял
если привязать нужно сразу обоих?
да
источник

А

Антон in Django [ru] #STAY HOME
ты ссылку вообще прочел и перевел, что тебе кинули? насколько я понял, там ответ на твой вопрос, но ты не вник
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
если нужно привязать одновременно обоих - делай 2 поля,
если или студента, или организацию - то читай поссылке
источник

V🤔

Vyacheslav 🤔 in Django [ru] #STAY HOME
Vyacheslav 🤔
Добрый вечер. Если я сделаю выборку по Model.object.filter(), закэширую результаты через присвоение, сохраню их в объекте, они останутся в состоянии на момент кэширования, даже если в базе фактические данные изменятся?
?
источник

S

Serj in Django [ru] #STAY HOME
Vyacheslav 🤔
Добрый вечер. Если я сделаю выборку по Model.object.filter(), закэширую результаты через присвоение, сохраню их в объекте, они останутся в состоянии на момент кэширования, даже если в базе фактические данные изменятся?
Если ты просто сделаешь Model.object.filter() и просто присвоишь в переменную, то кверисет не будет выполнен, соответственно когда ты всетаки заставишь его исполниться то получишь данные на момент исполнения.

https://docs.djangoproject.com/en/3.0/ref/models/querysets/#when-querysets-are-evaluated
источник

V🤔

Vyacheslav 🤔 in Django [ru] #STAY HOME
Вопрос заключается в том - если я его сначала исполню, а затем запишу результат в переменную. При повторном обращении, при условии что данные в базе поменялись, у меня будет сохранено старое состояние?
источник

А

Антон in Django [ru] #STAY HOME
ну, записал ты его в переменную и что? у джанго "ленивые" запросы, пока не выполнишь какое-нибудь действие с кверисетом, например, print() он не будет выполняться
источник

S

Serj in Django [ru] #STAY HOME
Антон
ну, записал ты его в переменную и что? у джанго "ленивые" запросы, пока не выполнишь какое-нибудь действие с кверисетом, например, print() он не будет выполняться
print не исполнит кверисет)
источник

А

Антон in Django [ru] #STAY HOME
выведет объекты
источник

А

Антон in Django [ru] #STAY HOME
а, это если list написать еще
источник

А

Антон in Django [ru] #STAY HOME
а так наверное напечатает что-то типа <QuerySet Class ...>
источник

S

Serj in Django [ru] #STAY HOME
Serj
print не исполнит кверисет)
только если вместо __str__ будет вызван __repr__
источник

V🤔

Vyacheslav 🤔 in Django [ru] #STAY HOME
Я итерирую кверисет с присвоением поля временной переменной
источник

V🤔

Vyacheslav 🤔 in Django [ru] #STAY HOME
т.е. могу сделать вывод, что он кэшируется
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Vyacheslav 🤔
т.е. могу сделать вывод, что он кэшируется
источник

V🤔

Vyacheslav 🤔 in Django [ru] #STAY HOME
что из там написанного прямо отвечает на мой вопрос?
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Vyacheslav 🤔
что из там написанного прямо отвечает на мой вопрос?
там написано, что если ты "оценишь" queryset как там описано, то в перененной сохранится результат
и при повтоном обращении к элментам в переменной запроса в БД не будет

но при этом следует учитывать, что, если предварительно не загрузить связанные данные, при обращении к foreignkey полю (за связанным объектом) будет запрос в БД

вот и делай выводы - изменятся ли данные в переменной если в БД что-то поменялось
источник