суммирование объектов.

8 views
Skip to first unread message

engel

unread,
Dec 9, 2007, 8:33:37 AM12/9/07
to Django russian
xочу просуммировать all_quantity из объектов quantity_numberbill c
таким же значением в handbookmodel.article:

class Sklad(models.Model):
all_quantity = models.IntegerField(u'Количество', null=True,
editable=False)
handbookmodel = models.ForeignKey(HandBookModel)
compbill = models.ForeignKey('CompBill', unique=True)

class CompBill(models.Model):
quantity_numberbill = models.IntegerField(u'Количество')
bill = models.ForeignKey('Bill', unique=True)
type_effects = models.CharField(u'Тип записи',max_length=1,
choices=TYPE_CHOICES)

написал так:
def save(self):
if self.compbill.type_effects == 'A':
self.all_quantity = sum(map(lambda x:
x.quantity_numberbill,self.compbill.all()))
return super(Sklad, self).save()

но как-то не очень выходит.

Alex Koshelev

unread,
Dec 9, 2007, 9:28:13 AM12/9/07
to Django russian
А откуда у ForeignKey all() ? Там же ссылка на элемент. Замени
self.compbill.all() на CompBill.objects.all(). Но мне кажется, что тут
у тебя проблема в логике кода и тебе не тот результат нужен. А вообще
такие дела лучше выполнять через SQL - через extra

engel

unread,
Dec 9, 2007, 9:54:45 AM12/9/07
to Django russian
спасибо. да эффект не тот который нужен. для каждой записи с
одинаковым handbookmodel.article свое значение all_quantity. А надо
чтобы было одно. Как лучше это сделать? А в def save(self) Можно
использовать SQL и в частности extra? или только во views?

engel

unread,
Dec 9, 2007, 10:10:09 AM12/9/07
to Django russian
думаю самым легким вариантом это будет перенос all_quantity в класс
HandBookModel

Alex Koshelev

unread,
Dec 9, 2007, 11:12:46 AM12/9/07
to Django russian
Самый лучший способ, это считать её каждый раз с помощью агрегатной
функции SUM в SQL. А то замучаешься с синхронизацией этого значения.

engel

unread,
Dec 9, 2007, 2:48:53 PM12/9/07
to Django russian
А можете написать пример такого SQL-запроса вместе с views и template.
Я не очень понимаю как оно должно выглядеть при передаче данных от SQL-
запроса в шаблон

Vadim Burmakin

unread,
Mar 10, 2008, 11:20:41 PM3/10/08
to django-...@googlegroups.com

Вы используете настолько странные имена переменных что я вообще запутался.

Каждый Склад может ссылаться на 1 CompBill? В чём прикол такой связи - это ведь OneToOneRelation получается. И что в таком случае нужно считать? Короче учите англ язык и называйте вещи своими именами, а то ничего н епонятно =). Или хотя бы всегда транслитом(как в случае со складом).

--
Regards,
Vadim <MockSoul> Burmakin,
St.Petersburg, Ru.
Reply all
Reply to author
Forward
0 new messages