неподдерживаемые типы операндов для *: 'Decimal' и vat - PullRequest
0 голосов
/ 21 сентября 2011

Кажется, у меня проблема с умножением в Django. Я хочу умножить общую сумму покупки, включая НДС, на мою стоимость НДС. К сожалению, я получил эту ошибку.

unsupported operand type(s) for *: 'Decimal' and 'VAT'

Похоже, моя программа вызывает vat (см. Представления), а не десятичную, а "НДС". Я не уверен, почему есть ошибка, если нет другого способа обойти это.

Views.py

purchases = Purchase.objects.all()
vat = purchases[0].vat
total_purchases = Purchase.objects.all().aggregate(price = Sum('amount'))
total_purchases_vat = total_purchases['price'] * vat

models.py

class VAT(models.Model):
    vat = models.DecimalField(max_digits = 4, decimal_places = 1)
    def __unicode__(self):
        return unicode(self.vat)

class Purchase(models.Model):
    vat_period = models.ForeignKey(VAT_Period)
    date = models.DateField()
    amount = models.DecimalField(max_digits=20, decimal_places=2)
    description =  models.TextField(max_length = 400)
    vat = models.ForeignKey(VAT)
    def __unicode__(self):
        return unicode(self.amount)

Ответы [ 2 ]

4 голосов
/ 21 сентября 2011

purchases[0].vat дает экземпляр модели VAT.Вам нужно использовать purchases[0].vat.vat, чтобы получить фактическое значение.

1 голос
/ 21 сентября 2011

По-видимому, вы хотели сказать:

vat = purchases[0].vat.vat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...