Как суммировать модель в Django rest Api

Я новичок в разработке Django rest Api Я хочу суммировать сумму аренды_суммы, бигли_счета, другой_суммы и получить значение как общая сумма, я не знаю как их сложить, помогите пожалуйста

Я хочу получить такое значение

{ "id": 1, "rent_date": "23-08-2022", "rentmonth": "июнь", "rent_amount": 500.0, "bijli_bill": 200.0, "другая_сумма": 100.0, "other_commnet": "тест", "total_amount": 800.0, }

Это файл модели

from sqlite3 import Date from django.db import models from django import forms from django.contrib.auth.models import User

.

class rent(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) # id=models.IntegerField(primary_key=True) rent_date = models.DateField(auto_now_add=True) rentmonth = models.CharField(max_length=30) rent_amount = models.FloatField() bijli_bill = models.FloatField() другая_сумма = models.FloatField(blank=True) other_commnet = models.CharField(blank=True, max_length=200)

Это мой сериализатор

from rest_framework import serializers from .models import rent from django.contrib.auth.models import User from django.db.models import Sum

class rentSerializer(serializers.ModelSerializer): rent_date = serializers.DateField(format="%d-%m-%Y", read_only=True) rentmonth = serializers.CharField() rent_amount = serializers.FloatField() bijli_bill = serializers.FloatField() other_amount = serializers.FloatField() other_commnet = serializers.CharField(max_length=200)

class Meta:
    model = rent
    fields = ('__all__')

Это файл просмотра

class rentViews(APIView):

def get(self, request, id=None):
    if id:
        item = rent.objects.get(id=id)
        serializer = rentSerializer(item)
        return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)

    items = rent.objects.all()
    serializer = rentSerializer(items, many=True)
    return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)

Вы можете создать пользовательское свойство для вашей модели Django, которое называется total_cost, например

class rent(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    rent_date = models.DateField(auto_now_add=True)
    rentmonth = models.CharField(max_length=30)
    rent_amount = models.FloatField()
    bijli_bill = models.FloatField()
    other_amount = models.FloatField(blank=True)
    other_commnet = models.CharField(blank=True, max_length=200)

    @property
    def total_cost(self):
        return self.rent_amount + self.bijli_bill + self.other_amount

теперь вы можете получить total_cost как любую другую переменную

rentExample = rent.objects.create(User=user, rentmonth="02", rent_amount=30, bijli_bill=30, other_amount=30)

print(rentExample.total_cost)
# output: 90
Вернуться на верх