Функция аннотации дает неверный результат - PullRequest
0 голосов
/ 12 июля 2020

Я установил следующие три модели в своем приложении django:

class SubCategory(models.Model):
    name = models.CharField('Nome della sottocategoria', max_length=30)

class Materials(models.Model):
    subcategory= models.ForeignKey(SubCategory)
    quantity=models.DecimalField()
    price=models.DecimalField()

class Costs_materials(models.Model):
    subcategory= models.ForeignKey(SubCategory)
    quantity=models.DecimalField()

В моих представлениях я установил следующий код:

agg=Subcategory.objects.annotate(giacenza=Coalesce(Sum('materials__quantity'), 0)).annotate(
        utilizzato=Coalesce(Sum('costs_materials__quantity'), 0))

Все работает отлично, но если Я пытаюсь добавить еще одну функцию аннотирования, пример объявления:

agg=Subcategory.objects.annotate(giacenza=Coalesce(Sum('materials__quantity'), 0)).annotate(
        utilizzato=Coalesce(Sum('costs_materials__quantity'), 0))

Результат giacenza и utilizzato неправильный, но результат вдвое больше, чем правильный. Пример A d, если результат должен быть 10, это 20 .

Где ошибка ??

...