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

Visto 8 veces
Saltar al primer mensaje no leído

engel

no leída,
9 dic 2007, 8:33:379/12/07
a 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

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

engel

no leída,
9 dic 2007, 9:54:459/12/07
a Django russian
спасибо. да эффект не тот который нужен. для каждой записи с
одинаковым handbookmodel.article свое значение all_quantity. А надо
чтобы было одно. Как лучше это сделать? А в def save(self) Можно
использовать SQL и в частности extra? или только во views?

engel

no leída,
9 dic 2007, 10:10:099/12/07
a Django russian
думаю самым легким вариантом это будет перенос all_quantity в класс
HandBookModel

Alex Koshelev

no leída,
9 dic 2007, 11:12:469/12/07
a Django russian
Самый лучший способ, это считать её каждый раз с помощью агрегатной
функции SUM в SQL. А то замучаешься с синхронизацией этого значения.

engel

no leída,
9 dic 2007, 14:48:539/12/07
a Django russian
А можете написать пример такого SQL-запроса вместе с views и template.
Я не очень понимаю как оно должно выглядеть при передаче данных от SQL-
запроса в шаблон

Vadim Burmakin

no leída,
10 mar 2008, 23:20:4110/3/08
a django-...@googlegroups.com

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

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

--
Regards,
Vadim <MockSoul> Burmakin,
St.Petersburg, Ru.
Responder a todos
Responder al autor
Reenviar
0 mensajes nuevos