Как получить доступ к сумме одного поля обратного внешнего ключа с помощью фильтра шаблона в django? - PullRequest
0 голосов
/ 08 мая 2020

Предположим, у меня есть 2 модели клиента и учетной записи.

Модели

class Account(models.Model):

    customer = models.ForeignKey(Customer,on_delete=models.CASCADE,
               blank=True,null=True,related_name='account')
    desc = models.CharField(max_length=100)
    paid = models.IntegerField(default=0)
    received = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

class Customer(models.Model):

    name = models.CharField(max_length=30,unique=True)
    contact = models.CharField(max_length=10)

Я хочу получить доступ к полям Сумма полученных и Сумма оплаченных в шаблоне

Просмотр клиентов

def show_customer(request,id=None):

    customer = Customer.objects.filter(user=request.user)

    return render(request,'customer/show_customer.html',{'customer':customer})

show_customer. html

<html>
{% for cust in customer %}
    {{cust.name}}
    {{cust.contact}}
    **Here I want sum of paid & sum of receive for current customer**
</html>

1 Ответ

1 голос
/ 08 мая 2020

Вы можете использовать django модели @property декоратор.

Модель вашего клиента

class Customer(models.Model):

    name = models.CharField(max_length=30,unique=True)
    contact = models.CharField(max_length=10)

    @property
    def received_amount(self):
        return self.account.all().aggregate(Sum('received'))['received__sum']

    @property
    def paid_amount(self):
        return self.account.all().aggregate(Sum('paid'))['paid__sum']

И затем вы можете получить к нему доступ в своем шаблоне

<html>
{% for cust in customer %}
    {{cust.name}}
    {{cust.contact}}
    {{ cust.received_amount }}
    {{ cust.paid_amount }}
</html>

Надеюсь, это вам поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...