You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何获取每个贷款申请关联的最新paymentdate

如何获取每个贷款申请对应的最新还款日期

模型代码(models.py)

class loan(models.Model):
    completed=models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True,null=True)
    application_id=models.CharField(max_length=100,unique=True)

class topay(models.Model):
    loanapplication=models.ForeignKey(loan,on_delete=models.CASCADE,null=True)
    paymentdate=models.DateField(null=True, blank=True)

需求

要拿到每一个贷款申请对应的最新paymentdate。

当前使用的查询代码(views.py)

topay.objects.filter().values().annotate(last=Max('paymentdate'))

当前代码的问题

这段代码没有按贷款申请分组,最终只会算出所有topay记录里的最大还款日期,无法得到每个贷款申请各自对应的最新日期。

正确的查询写法

必须按关联的贷款申请进行分组,才能为每个贷款申请单独计算最新还款日期:

写法1:直接从topay表分组查询

适合只需要贷款申请ID和对应最新日期的场景:

from django.db.models import Max

topay.objects.values('loanapplication').annotate(last_payment_date=Max('paymentdate'))

写法2:关联贷款表查询(获取更多贷款信息)

如果还需要贷款的其他字段(比如application_id、完成状态completed),可以先给外键添加反向关联名,修改模型如下:

class topay(models.Model):
    # 新增related_name用于反向关联
    loanapplication=models.ForeignKey(loan,on_delete=models.CASCADE,null=True, related_name='payments')
    paymentdate=models.DateField(null=True, blank=True)

然后通过贷款模型查询,同时获取贷款完整信息和对应最新还款日期:

from django.db.models import Max

loan.objects.annotate(last_payment_date=Max('payments__paymentdate'))

内容的提问来源于stack exchange,提问作者Jainivash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:15:40