代码之家  ›  专栏  ›  技术社区  ›  Niladry Kar

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

  •  0
  • Niladry Kar  · 技术社区  · 7 年前

    这些是我的模型:

    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 关于日期 日记本 通过。

    我试了一下:

    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 为了测试的目的而创造一些日期。

    但结果显示没有…

    有人能告诉我我的问题是什么吗?

    谢谢你

    1 回复  |  直到 7 年前