Я работаю над проектом django, который включает в себя три модели, как указано ниже Клиент, Кредит, Платеж.

Я получаю множество дубликатов в моем шаблоне, когда пытаюсь вызвать рассчитанные платежи по кредиту в шаблонах. Мои модели:

class Client(models.Model):

full_name = models.CharField(max_length=200,blank=True)    
 
staff=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.SET_NULL,null=True,blank=True,related_name="client")
date = models.DateTimeField(default=timezone.now) 

class Loan(models.Model):

ref = ShortUUIDField(length=6,max_length=6,alphabet="ABCDZXFQFHKRKL0123456789",unique=True) 

loan_amount = models.IntegerField(blank=True,null=True)

staff=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.SET_NULL,null=True,blank=True,related_name="loans")
search_client=models.ForeignKey(Client,on_delete=models.SET_NULL,null=True,blank=True)



@cached_property
def loan_repayments(self):
  
  myfilter = Loan.objects.filter(ref=self.ref,payment__payment_reason='loan repayment') 
  result=myfilter.aggregate(total=Sum(F('payment__amount')))
  total =  result['total']
  if total is None:
    return 0
  return total  

class Payment(models.Model):

ref = ShortUUIDField(length=6,max_length=6,alphabet="ABCDZXFQFHKRKL0123456789",unique=True) 

payment_reason = models.CharField(max_length=200, null=True, blank=True,choices=PAYMENT_REASON,default='loan repayment',db_index=True)
amount = models.IntegerField(blank=True, null=True)
lender = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL,
                           blank=True, null=True, related_name="payments")
loan = models.ForeignKey(Loan, on_delete=models.CASCADE,
                           blank=True, null=True)                           

Мое мнение:

class Loan(LoginRequiredMixin,ListView): query_set =Loan.objects.filter(status="active",action="creating loan").select_related('staff','search_client') имя_объекта_контекста = 'транзакции' paginate_by = 15

мой шаблон:

дубликаты получаю: дубликаты на панели инструментов

Вернуться на верх