Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 18, 2015 14:29:58

eboome
Зарегистрирован: 2013-06-13
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать annotate

есть кверисет:

n=TopupOperations.objects.filter(user_status=True).filter(activity=True).annotate(rate=F('amount') / F('sva__owner__country__currency_rate'))
но все время с ошибкой:
'ExpressionNode' object has no attribute 'lookup'

Отредактировано eboome (Авг. 18, 2015 14:30:22)

Офлайн

#2 Авг. 18, 2015 20:11:49

lead-in
Зарегистрирован: 2014-10-13
Сообщения: 19
Репутация: +  5  -
Профиль   Отправить e-mail  

как сделать annotate

Вы чего сделать-то хотите? Есть такое подозрение что вам нужно что-то другое, возможно select_related и extra.

Офлайн

#3 Авг. 19, 2015 06:03:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать annotate

Покажите откуда вы импортируете F.



Офлайн

#4 Авг. 19, 2015 10:41:30

eboome
Зарегистрирован: 2013-06-13
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать annotate

lead-in
Вы чего сделать-то хотите? Есть такое подозрение что вам нужно что-то другое, возможно select_related и extra.
Суть, есть вюшка ListView, в модели TopupOperations есть баланс(amount), мне нужно етот баланс сконвертировать в другую валюту, курс валюти я беру по связи ‘sva__owner__country__currency_rate’ етот результат мне нужно запихнуть в rate. Чтоб потом на темплейте rate был доступен в object_list

FishHook
Покажите откуда вы импортируете F.
from django.db.models import F

Отредактировано eboome (Авг. 19, 2015 10:41:47)

Офлайн

#5 Авг. 19, 2015 10:50:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать annotate

А ошибка на каком этапе возникает? Если в шаблоне никак не использовать выборку, есть ошибка?



Офлайн

#6 Авг. 19, 2015 10:52:59

eboome
Зарегистрирован: 2013-06-13
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать annotate

FishHook
А ошибка на каком этапе возникает? Если в шаблоне никак не использовать выборку, есть ошибка?
ошибка возникает, когда я пробую запустить етот кверисетю До шаблона дело не доходит(
та же сама ошибка когда использую aggregate:
MyModel.objects.filter(user_status=True).aggregate(rate=F('amount')/F('sva__currency_rate'), output_field=FloatField())

Отредактировано eboome (Авг. 19, 2015 10:59:02)

Офлайн

#7 Авг. 19, 2015 11:13:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

как сделать annotate

eboome
ошибка возникает, когда я пробую запустить етот кверисетю До шаблона дело не доходит(
Что значит “запустить” кверисет? Вы его в шелле выполняете?



Офлайн

#8 Авг. 19, 2015 11:20:48

eboome
Зарегистрирован: 2013-06-13
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать annotate

FishHook
Что значит “запустить” кверисет? Вы его в шелле выполняете?
В шелле пробовал - еррор. И метод класса def get_queryset возвращает тот же еррор. И да использую Postgres 9.4

Офлайн

#9 Авг. 19, 2015 12:47:15

eboome
Зарегистрирован: 2013-06-13
Сообщения: 35
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать annotate

Проблемму решил - етот кверисет работает з Джангой 1.8 и выше

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version