Как выполнить двухшаговое обратное отношение в запросе django? - PullRequest
0 голосов
/ 11 июня 2019

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

class Group1(models.Model):
    group_name = models.CharField(max_length=32)
    master = models.ForeignKey("self",on_delete=models.CASCADE,related_name='master_group',null=True)

class Ledger1(models.Model):
    name            = models.CharField(max_length=32)
    group1_name     = models.ForeignKey(Group1,on_delete=models.CASCADE,null=True,related_name='ledgergroups')
    closing_balance = models.DecimalField(default=0.00,max_digits=20,decimal_places=2,blank=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=20,decimal_places=2,null=True)
    credit          = models.DecimalField(max_digits=20,decimal_places=2,null=True)

Как видите, модель Group1 подключена к модели Ledger1, которая в дальнейшем подключена к модели Journal.

Я хочу сделать запрос в представлениях django, чтобы он вычислял closing_balance каждого Group относительно прошедшей даты Journal.

Я попробовал следующее:

group_closing = Group1.objects.filter(ledgergroups__Debitledgers__date__gte=Start_date,ledgergroups__Debitledgers__date__lt=End_date).aggregate(the_sum=Coalesce(Sum('ledgergroups__Closing_balance'), Value(0)))['the_sum']

Start_date и End_date содержит некоторую дату для целей тестирования.

Но результаты показывают, что ничего нет.

Может кто-нибудь сказать мне, что беспокоит в моем запросе.

Спасибо

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