Size: a a a

Django [ru] #STAY HOME

2020 April 24

AG

Artem Gubatenko in Django [ru] #STAY HOME
Миркамал Самиев
Model.objects.get(id_user = user_id,status = 1)
get() должен всегда находить одно значение, в иных случаях будет exception
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
я им пользовался - норм, но на джанго 2.2

хранит в БД в виде строки, через запятую
извлекает и ожидает значения разделенные переносом строки. Но это в стоке, может можно и настраивать, не помню.
источник

B

Buckwheat Cat in Django [ru] #STAY HOME
Artem Gubatenko
я им пользовался - норм, но на джанго 2.2

хранит в БД в виде строки, через запятую
извлекает и ожидает значения разделенные переносом строки. Но это в стоке, может можно и настраивать, не помню.
спс. бу пробовать
источник

N

N1LEX in Django [ru] #STAY HOME
Что не устраивает
источник

AD

Alex Dem in Django [ru] #STAY HOME
Александр Виноградов
Вот! data должна быть словарём, а не строкой, а сериализатор отдаёт строку
тут data - аргумент, объект подлежащий сериализации

сериализатор и должен отдавать строку

все правильно работает, ты просто через сериализатор пытаешься решить какую-то свою задачу, которую он не должен решать
источник

Z

ZHU in Django [ru] #STAY HOME
ZHU
нашел решение если кому нужно потом для интервалов
SELECT
   "st",
   round(AVG("core_tankdata"."volume")::numeric, 2)  as "avg_volume",
   round(AVG("core_tankdata"."density")::numeric, 3) as "avg_density",
   round(AVG("core_tankdata"."mass")::numeric, 2)    as "avg_mass",
   round(AVG("core_tankdata"."level")::numeric, 2)   as "avg_level"
FROM generate_series('2019-01-01 00:00:00+06:00', '2020-04-23 23:59:59+06:00', interval '1 hour') as st, "core_tankdata"
WHERE ("core_tankdata"."record_time" >= st AND "core_tankdata"."record_time" < st + '1 hour')
GROUP BY st ORDER BY st ASC
блин нашел одну загвостку получаю значения где есть они! как вставить условие сли ноне вставлять 0 ? в
round(AVG("core_tankdata"."volume")::numeric, 2)  as "avg_volume",
   round(AVG("core_tankdata"."density")::numeric, 3) as "avg_density",
   round(AVG("core_tankdata"."mass")::numeric, 2)    as "avg_mass",
   round(AVG("core_tankdata"."level")::numeric, 2)   as "avg_level"
источник

А

Антон in Django [ru] #STAY HOME
coalesce()
источник

T

Tim in Django [ru] #STAY HOME
Миркамал Самиев
разве по идее не должно возвращать None или что то такое ?
юзай вместо get filter().first() и проверяй на None
источник

А

Антон in Django [ru] #STAY HOME
first() получает весь объект, более быстрый запрос после filter() - exists()
источник

T

Tim in Django [ru] #STAY HOME
Антон
first() получает весь объект, более быстрый запрос после filter() - exists()
exists вернет true false, только если нужна проверка , а сам объекь не нужен
источник

А

Антон in Django [ru] #STAY HOME
да, поэтому:
if qs.exists():
   obj = qs.first()
источник

T

Tim in Django [ru] #STAY HOME
только перед этим нужно еще объевить qs и obj))
источник

T

Tim in Django [ru] #STAY HOME
хотя необязательно, от логики зависит
источник

А

Алексей in Django [ru] #STAY HOME
Антон
да, поэтому:
if qs.exists():
   obj = qs.first()
вообще, если ожидается вероятнее, что объект существует, то не надо exists() проверять, т.к. эта операция не особо быстрее просто first(), как мне помнится
источник

А

Алексей in Django [ru] #STAY HOME
получится, что вы выполните почти 2 операции first()
источник

А

Антон in Django [ru] #STAY HOME
в зависимости от того, что ему нужно делать. Например, если надо обновить содержимое полей, то
qs.exists()
qs.update()
сработает

UPD а вот
obj = qs.first()
obj.update() - уже нет
источник

А

Антон in Django [ru] #STAY HOME
либо надо прописывать уже по-другому
источник

А

Алексей in Django [ru] #STAY HOME
почему сразу update не сделать?
источник

А

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

А

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