Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 3, 2010 12:05:13

pyOut
От:
Зарегистрирован: 2006-07-16
Сообщения: 125
Репутация: +  0  -
Профиль   Отправить e-mail  

Сохранение по связанным таблицам

Имеются модели:

class Item(models.Model):
name = models.CharField(_('Name'), max_length=200)
points = models.IntegerField(_('Points'), default=0)
cluster = models.ForeignKey(Cluster, verbose_name=_('Cluster'))
costumerservice = models.BooleanField(_('Customer Service'), blank=True, default=False)

class Meta:
verbose_name = _('Item')
verbose_name_plural = _('Items')

def __unicode__(self):
return u'%s (%d points)' % (self.name, self.points)

class Report(models.Model):
user = models.ForeignKey(User)
date = models.DateTimeField(_('Date'), default=datetime.now())
country = models.ForeignKey(Country)
publication = models.BooleanField(_('Publication'), blank=True, default=False)
total = models.IntegerField(default=0)

class Meta:
verbose_name = _('Report')
verbose_name_plural = _('Reports')

def cluster_name(self):
return self.country.cluster

def __unicode__(self):
return self.country.country

def save(self, *args, **kwargs):
self.total = 0
for report_item in ReportItem.objects.filter(report=self):
self.total += report_item.item.points * report_item.total
reports = Report.objects.filter(country=self.country, publication=True).all()
super(Report, self).save(*args, **kwargs)


class ReportItem(models.Model):
item = models.ForeignKey(Item)
total = models.IntegerField(default=0)
report = models.ForeignKey(Report, related_name='items', verbose_name=_('Report Item'))
У меня не изменяется при сохранении сразу же результаты report.total чтобы они обновились нужно дважды сохранить модель через админку. Как можно этого избежать? Помогите пожалуйста.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version