Я пытаюсь добавить значение в запрос, который возвращается из представления на основе классов.Моя база данных состоит из пользователей, у пользователя может быть много транзакций, а транзакция может иметь много продаж.Я хочу рассчитать потерю прибыли от продажи с помощью ((sale.amount_per_coin - sale.transaction.amount_per_coin_sold) * sale.amount)
и добавить ее к каждой возвращаемой строке.Возможно ли это сделать, и если да, то как мне поступить?
Модель транзакции ниже
class Transaction(models.Model):
currency = models.CharField(max_length=20)
amount = models.IntegerField()
total_price = models.DecimalField(max_digits=7, decimal_places=2)
date_purchased = models.DateTimeField()
note = models.TextField(default="")
owner = models.ForeignKey(User, on_delete=models.CASCADE)
amount_per_coin = models.DecimalField(max_digits=7, decimal_places=2, editable=False)
def save(self, *args, **kwargs):
self.amount_per_coin = self.total_price / self.amount
super(Transaction, self).save(*args, **kwargs)
Модель продажи ниже
class Sale(models.Model):
amount_sold = models.IntegerField()
total_price_sold = models.DecimalField(max_digits=7, decimal_places=2)
date_sold = models.DateTimeField(default=timezone.now)
note = models.TextField(default="")
transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE)
amount_per_coin_sold = models.DecimalField(max_digits=7, decimal_places=2, editable=False)
def save(self, *args, **kwargs):
self.amount_per_coin_sold = self.total_price_sold / self.amount_sold
super(Sale, self).save(*args, **kwargs)
представление на основе классаниже
class SaleListView(ListView):
model = Sale
template_name = 'webapp/sale.html'
context_object_name = 'sales'
paginate_by = 5
def get_queryset(self):
return super().get_queryset().filter(transaction__owner=self.request.user)