Умножение трех моделей в django и получение результата в представлениях
Моя модель:
class VisData(models.Model):
visdata_id = models.AutoField(primary_key=True,blank=True)
user_name = models.ForeignKey(Customer, null=True, on_delete=models.SET_NULL,blank=True)
title = models.CharField(max_length=200, null=True,blank=True)
buy_sell = models.CharField(max_length=1, null=True,blank=True)
date = models.DateField(auto_now_add=False,null=True,editable=True,blank=True)
hour = models.TimeField(auto_now=False, auto_now_add=False,null=True,editable=True,blank=True)
shares_number = models.DecimalField(decimal_places=0,default=0,max_digits=999,null=True,blank=True)
course = models.DecimalField(decimal_places=2,default=0,max_digits=999,null=True,blank=True)
fare = models.DecimalField(decimal_places=2,default=0,max_digits=999,null=True,blank=True)
def __str__(self):
return self.title
и я хочу присвоить: total_value = (shares_number * (курс - тариф)) и просто вывести это в терминале
мои взгляды:
def summaryPage(request):
visdata = VisData.objects.all()
#print(visdata)
context = {}
return render(request, 'smth/homepage.html', context)
Я нашел несколько близких ответов, но не смог понять решение и использовать их в своем коде
То, что вам, вероятно, нужно, называется агрегация:
from django.db.models import Sum
def summaryPage(request):
aggregated_data = VisData.objects.aggregate(
shares_sum=Sum('shares_number'),
course_sum=Sum('course'),
fare_sum=Sum('fare')
)
result = aggregated_data['shares_sum'] * (aggregated_data['course'] - aggregated_data['fare'])
print(result)
...
Также старайтесь избегать использования в Python имен функций в верблюжьем регистре. Подробнее см. здесь.