gpt4 book ai didi

python - Django:处理定期付款时客户和付款的推荐模型定义

转载 作者:行者123 更新时间:2023-12-01 08:55:04 25 4
gpt4 key购买 nike

假设我有两个模型,一个用于客户,另一个用于付款。每个月我的客户应该在每月 15 日之前付款。为了轻松获得当月未付款客户的报告,构建模型的最佳方法是什么?

客户模型:

class CustomerModel(models.Model):
first_name = models.TextField()
last_name = models.TextField()
email = models.EmailField()

支付模式:

class Payment(models.Model):
customer = models.ForeignKey(
Customer,
on_delete=models.SET_NULL,
null=True)
amount = models.FloatField()
date_received = models.DateField(auto_now=False)

最佳答案

我们可以利用.exclude(..)此处排除已付款的人,例如:

from datetime import date
month_day = date.today() # specify a day in the month to check
from_date=month_day.replace(day=1) # the first of the current month
to_date=month_day.replace(day=15) # the 15th of the current month

Customer.objects.exclude(
payment__date_received__gte=from_date
payment__date_received__lte=to_date
)

或更优雅的 __range查找:

Customer.objects.exclude(
payment__date_received__range=(from_date, to_date)
)

如果我们今天运行这个(month_day 等于 2018 年 10 月 15 日),我们将得到所有 Customer 创建 payment 的人与 date_received 10 月 1 到 10 月 15 日之间。这个月的任何一天都会发生同样的情况。通过设置month_day例如date(2017, 12) ,获取2017年12月1日至2017年12月15日期间所有未付款的客户。

请注意,也许并非所有客户都在那一刻开始使用您的服务(或已经取消订阅)。在这种情况下这些 Customer s 将因此被列出,因此可能需要一些重构才能使其更可用。

关于python - Django:处理定期付款时客户和付款的推荐模型定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52823867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com