如何在Django查询中执行两步反向关系?

时间:2019-06-11 06:16:04

标签: django django-queryset

这些是我的模特:

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的{​​{1}}。

我尝试了以下方法:

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包含一些用于测试目的的日期。

但是结果显示为None ..

任何人都可以告诉我查询中有什么问题。

谢谢

0 个答案:

没有答案