Django Rest Framework Summarize Nested Object Data By Distinct Month
Я пытаюсь создать сериализатор категорий, который будет суммировать суммы транзакций по месяцам для каждой категории для следующих моделей моделей.
class Category(models.Model):
description = models.CharField(max_length=255)
class Transaction(models.Model):
description = models.CharField(max_length=255)
amount = models.FloatField()
date = models.DateField()
category = models.ForeignKey(Category,
on_delete=models.CASCADE,
related_name='transactions',
blank=True,
null=True
)
Я смог получить список отдельных месяцев и общих сумм с помощью следующего сериализатора и View, но когда я пытаюсь использовать сериализатор в сериализаторе Category, я получаю ошибку внизу
class TransactionMonthTotalSerializer(serializers.Serializer):
month = serializers.CharField()
totalAmount = serializers.FloatField()
class CategoryMonthTotalSerializer(serializers.ModelSerializer):
transactionMonth = TransactionMonthTotalSerializer(many=True)
class Meta:
model = Category
fields = ['description','transactionMonth']
class TransactionMonthTotalViewSet(views.APIView):
def get(self,request):
data = Transaction.objects.filter(owner=request.user)
.annotate(month=TruncMonth('date'))
.values('month')
.distinct()
.annotate(totalAmount=Sum('amount'))
results = TransactionMonthTotalSerializer(data, many=True).data
return Response(results)
class CategoryMonthTotalViewSet(viewsets.ModelViewSet):
serializer_class = CategoryMonthTotalSerializer
permission_classess = [IsAuthenticated]
def get_queryset(self):
return Category.objects.filter(owner=self.request.user)
Получена ошибка AttributeError при попытке получить значение для поля transactionMonth
на сериализаторе CategoryMonthTotalSerializer
.
Поле сериализатора может быть названо неверно и не совпадать с атрибутом или ключом экземпляра Category
.
Оригинальный текст исключения был следующим: у объекта 'Category' нет атрибута 'transactionMonth'.