Как хранить данные в базе данных из views.py Django? - PullRequest
0 голосов
/ 07 декабря 2018

Это мои модели:

class ledger1(models.Model):
    name            = models.CharField(max_length=32)
    Closing_balance = models.DecimalField(max_digits=10,decimal_places=2,blank=True,null=True)

class journal(models.Model):
    Date       = models.DateField(default=datetime.date.today)
    By         = models.ForeignKey(ledger1,on_delete=models.CASCADE,related_name='Debitledgers')
    To         = models.ForeignKey(ledger1,on_delete=models.CASCADE,related_name='Creditledgers')
    Debit      = models.DecimalField(max_digits=10,decimal_places=2,null=True)
    Credit     = models.DecimalField(max_digits=10,decimal_places=2,null=True)

И в моих представлениях я сделал это:

qscb  = journal.objects.filter(By=ledger1_details.pk, Date__gte=selectdatefield_details.Start_Date, Date__lte=selectdatefield_details.End_Date)
qscb2 = journal.objects.filter(To=ledger1_details.pk, Date__gte=selectdatefield_details.Start_Date, Date__lte=selectdatefield_details.End_Date) 

total_debitcb = qscb.aggregate(the_sum=Coalesce(Sum('Debit'), Value(0)))['the_sum']
total_creditcb = qscb2.aggregate(the_sum=Coalesce(Sum('Credit'), Value(0)))['the_sum']

if(ledger1_details.group1_Name.balance_nature == 'Debit'):
    closing_balance = opening_balance + total_debitcb - total_creditcb
else:
    closing_balance = opening_balance + total_creditcb - total_debitcb 

Я хочу сохранить значение 'closed_balance' в поле моей модели с именем'Closing_Balance' .... И автоматически обновлять его при внесении каких-либо изменений ...

Есть идеи у кого-нибудь, как это возможно в django?

Спасибо

1 Ответ

0 голосов
/ 07 декабря 2018

Вы можете попробовать:

if(ledger1_details.group1_Name.balance_nature == 'Debit'):
    closing_balance = opening_balance + total_debitcb - total_creditcb
else:
    closing_balance = opening_balance + total_creditcb - total_debitcb 
ledger1_detail = ledger1.objects.get(pk=ledger1_details.pk)
ledger1_detail.Closing_balance = closing_balance
ledger1_detail.save(update_fields=['Closing_balance'])
...