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

基于Django多表关联,从Customer表构建聚合查询的技术问询

客户数据查询需求与技术困境

参考模型定义

from django.db import models
from django.db.models import Model, CASCADE, DecimalField, CharField, OneToOneField, ForeignKey, DateField

# 假设PAYMENT_DUE_DATES为预定义选项元组,示例:
# PAYMENT_DUE_DATES = (
#     ('7D', '7 Days'),
#     ('14D', '14 Days'),
#     ('30D', '30 Days'),
# )

class CustomerInformation(Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)

class CustomerCreditInformation(Model):
    customer = OneToOneField(CustomerInformation, on_delete=CASCADE)
    max_credit_amount = DecimalField(
        max_digits=10, decimal_places=2, verbose_name='Credit Amount')
    due_in = CharField(choices=PAYMENT_DUE_DATES,
                       max_length=4, verbose_name='Payable before')

class Invoice(Model):
    financial_party = models.ForeignKey(
        CustomerInformation, on_delete=models.CASCADE, null=True, verbose_name="Submit Invoice To:")
    date_billed_original = models.DateField(
        verbose_name='Billed Date', editable=False, null=True)

class InvoicePayment(models.Model):
    invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE)
    amount = models.DecimalField(
        max_digits=12, decimal_places=2, verbose_name='Payment Amount')

class Charges(models.Model):
    invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE)
    amount = models.DecimalField(max_digits=12, decimal_places=2)

注:发票可创建但未出账,即未出账的发票也可能存在费用记录。

需求说明

需从CustomerInformation表发起单次查询,返回包含以下字段的字典:客户姓名、信用额度、已出账未结清总额、逾期未结清总额,具体需求点:

  • 拼接客户姓名(已完成)
  • 标注客户最高信用额度(已完成)
  • 标注所有已出账发票的未结清费用(过滤条件待明确)
  • 标注逾期未结清费用:筛选出账日期早于「当前本地日期 - customercredit__due_in对应的时间差」的发票

现状与问题

  • 目前已从Invoice表实现上述查询,但业务要求必须从Customer表发起(需结合客户列表页的其他功能)
  • Invoice模型已编写Manager函数:
    • AnnotatePayments:计算单张发票的费用总和与付款总和,标注未结余额
    • BilledNotPaid:调用AnnotatePayments,排除未出账的发票
  • 无法通过子查询等方式复用现有Manager函数,且不愿重复编写逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:13:34