0
у меня есть модели, как это:Применить условие в этом запросе в Джанго
class Category(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=128)
budget = models.DecimalField(default=0.0, decimal_places=2, max_digits=8, help_text="Amount in dollars ($)")
class Task(models.Model):
description = models.CharField(max_length=128)
owner = models.ForeignKey(User, default="bride")
category = models.ForeignKey(Category)
cost = models.DecimalField(default=0.0, decimal_places=2, max_digits=6, help_text="Amount in dollars ($)")
Я хочу найти сумму всех бюджетов каждой категории и показать remaining budget
:
categories = Category.objects.filter(user_id=request.user.id).order_by("name")
categories_cost = [Task.objects.filter(category=i).aggregate(Sum('cost')) for i in categories]
category_budget = [i.budget for i in categories]
categories = zip(categories, remaining_budget)
Некоторые категории не могут есть задача еще. Таким образом, categories_cost
будет выглядеть следующим образом:
[{'cost__sum': None}, {'cost__sum': Decimal('0.00')}, {'cost__sum': None}, {'cost__sum': Decimal('300.00')}]
Так что, когда я пытаюсь вычитать я получаю эту ошибку:
>>> remaining_budget = [i.budget - j['cost__sum'] for i, j in zip(categories, rem)]
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'Decimal' and 'NoneType'
Как решить эту проблему?
В операции между бюджетом и None, что бы вам нравятся результаты показать? – yuvi
Я хочу показать полный бюджет категории. – pynovice