Size: a a a

Django [ru] #STAY HOME

2020 September 03

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Zakhar
Добрый день!

Не сталкивались с такой ошибкой?
Access to XMLHttpRequest at 'https://api.privet-obed.ru/users/user/28/detail_information/' from origin 'http://lk.privet-obed.ru' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

В каких то промежутках проскакивает, не могу понять откуда
Написано же - CORS. Установи и настрой django-cors-headers (есть в pypi), а ещё лучше - настрой nginx адекватно, чтобы он правильный заголовок Access-Control-Allow-Origin выдавал на соответствующий поддомен. Только не звезду!
источник

V

Valera in Django [ru] #STAY HOME
Всем привет! Есть ли какой-то бест практис, как лучше кэшировать данные, которые отправляются кусками (через limit offset)?
источник

D

Dmitry in Django [ru] #STAY HOME
Vitaliy Derbentsev
Написано же - CORS. Установи и настрой django-cors-headers (есть в pypi), а ещё лучше - настрой nginx адекватно, чтобы он правильный заголовок Access-Control-Allow-Origin выдавал на соответствующий поддомен. Только не звезду!
там кажись и нжинкса нет
источник

VK

Valentin Komarov in Django [ru] #STAY HOME
Vitaliy Derbentsev
Логично. Джанга не занимается вычислением аннотаций, она поручает это базе. Скажем, в аннотации мы попросили просуммировать какое-то поле таблицы по всем записям - откуда джанге знать, какие записи в этой таблице лежат и чему у них равно это поле? Поэтому сначала добавляем в таблицу запись, а уже после просим базу посчитать нужные нам значения по актуальным данным.
Если же у вас никаких агрегатных функций не используется, а значение можно получить исходя из самого экземпляра модели, то создайте в модели свойство (property), которое будет проводить вычисление, и не напрягайте базу без надобности.
В некоторых случаях можно скомбинировать, храня в разделяемой потоками памяти актуальные агрегатные значения и вычисляя при каждой записи в базу, и выбирать их через свойство модели. Но нужно позаботиться о первичной инициализации после запуска.
Мне казалось, что нужно как раз не создавать проперти на модели без надобности, и стараться все перекладывать на базу. В моем случае нужно посчитать количество связных объектов и не хочется делать это на каждый объект из всего кверисета. (понятное дело, что запрос на list эндпоинт модели не выгребает все 1кк записей, слава богу есть пагинация. но даже, если размер страницы 100, на каждый элемент в питоне делать математику с доп запросами к базе - плохая затея кмк)
источник

Z

Zakhar in Django [ru] #STAY HOME
Dmitry
там кажись и нжинкса нет
нгикс есть
источник

D

Dmitry in Django [ru] #STAY HOME
Zakhar
нгикс есть
а прокидываете вы что? у вас DEBUG=True на сервере
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Zakhar
да, 'corsheaders.middleware.CorsMiddleware'

что то еще вписать надо?
А настройки у нее какие? В списке CORS_ALLOW_ORIGINS указан поддомен, с которого идёт обращение?
источник

UU

Ulookbek Ulookbek in Django [ru] #STAY HOME
источник

Z

Zakhar in Django [ru] #STAY HOME
Dmitry
а прокидываете вы что? у вас DEBUG=True на сервере
это тестовый сервис
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Valentin Komarov
Мне казалось, что нужно как раз не создавать проперти на модели без надобности, и стараться все перекладывать на базу. В моем случае нужно посчитать количество связных объектов и не хочется делать это на каждый объект из всего кверисета. (понятное дело, что запрос на list эндпоинт модели не выгребает все 1кк записей, слава богу есть пагинация. но даже, если размер страницы 100, на каждый элемент в питоне делать математику с доп запросами к базе - плохая затея кмк)
без доп запроса не обойтись, потому что при создании ОРМ ничего не знает о твоих аннотациях и вычислениях. там get_queryset() не участвует
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Valentin Komarov
Мне казалось, что нужно как раз не создавать проперти на модели без надобности, и стараться все перекладывать на базу. В моем случае нужно посчитать количество связных объектов и не хочется делать это на каждый объект из всего кверисета. (понятное дело, что запрос на list эндпоинт модели не выгребает все 1кк записей, слава богу есть пагинация. но даже, если размер страницы 100, на каждый элемент в питоне делать математику с доп запросами к базе - плохая затея кмк)
Так и откуда джанга должна знать, сколько связанных объектов хранится в базе? Значит, надо разделить запрос самого списка объектов и запрос количества связанных объектов, сгруппированных и отфильтрованных по pk объектов в выбранном списке. Потребуется всего 2 запроса. А при выводе каждой записи, по ее pk заглядывать в полученный список количеств связанных объектов.
источник

D

Dmitry in Django [ru] #STAY HOME
Artem Gubatenko
без доп запроса не обойтись, потому что при создании ОРМ ничего не знает о твоих аннотациях и вычислениях. там get_queryset() не участвует
можно raw написать
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Dmitry
можно raw написать
который, при создании, вернет не только ID созданной записи, но остальные столбцы (+ еще что-то)?

К сожалению, я такие запросы составлять не умею(
источник

꧁●╠ƊᎯֆ₸₳Ŋ╣●꧂... in Django [ru] #STAY HOME
доброго времени суток ! не подскажите как вывести?
есть переменная x = {},{},{}
как вывести последний словарь?
источник

D

Dmitry in Django [ru] #STAY HOME
Artem Gubatenko
который, при создании, вернет не только ID созданной записи, но остальные столбцы (+ еще что-то)?

К сожалению, я такие запросы составлять не умею(
да можно что хочешь вытащить, было бы желание. Я недавно писал запрос чем-то похожий по своей логике, если я правильно помню, также с аннотациями и агрегациями, пару миллионов записей для постгри вообще не проблема
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Тогда это сложно
источник

AG

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

AG

Artem Gubatenko in Django [ru] #STAY HOME
꧁●╠ƊᎯֆ₸₳Ŋ╣●꧂
доброго времени суток ! не подскажите как вывести?
есть переменная x = {},{},{}
как вывести последний словарь?
print(x[-1])
источник

VD

Vitaliy Derbentsev in Django [ru] #STAY HOME
Тут две принципиально разные задачи: 1) внести в базу данные 2) провести вычисления по хранимым данным.
Всегда также остаётся возможность кэширования результатов вычислений, если по предыдущим результатам можно вычислить последующие без обращения к базе.
источник

VK

Valentin Komarov in Django [ru] #STAY HOME
Vitaliy Derbentsev
Так и откуда джанга должна знать, сколько связанных объектов хранится в базе? Значит, надо разделить запрос самого списка объектов и запрос количества связанных объектов, сгруппированных и отфильтрованных по pk объектов в выбранном списке. Потребуется всего 2 запроса. А при выводе каждой записи, по ее pk заглядывать в полученный список количеств связанных объектов.
Мысль здравая. Но кто должен заниматься работой с этими мапами? Клиент нашего API? Или мы в памяти должны хранить их у себя в приложении? Но ведь все, что не находится на уровне базы, очень тяжело работает в условиях, скажем, канкареси.
источник