from django.db import models
import datetime
from django.db.models.signals import post_save
from django.dispatch import receiver
@receiver(post_save, sender=CustomerSheet) #Django的信号机制,捕获CustomerSheet表生时的post_save请求,然后执行下面代码
def create_customer_plan(sender, instance, created, **kwargs):
# instance为CustomerSheet表格实例
if created: # 如果CustomerSheet表实例创建成功
day = int(instance.loan_date.strftime("%d"))
month = int(instance.loan_date.strftime("%m"))
year = int(instance.loan_date.strftime("%Y"))
print([instance.product])
if instance.product == "先息后本":
print("hello world")
for i in range(instance.loan_months + 1):
"""计算每次付息字段"""
if i == 0:
money_back_date = datetime.date(year, month, day)
else:
money_back_date = datetime.date(year, month, day - 1)
if i == instance.loan_months:
money_plan = "本金"
capital_back = instance.capital
stay_car_money = 0
flow_money = 0
other_deposit = 0
CustomerMoneyBackPlan.objects.create(money_back_plan=instance, money_plan=money_plan,
capital_back=capital_back,
money_back_date=money_back_date,
stay_car_money=stay_car_money,
flow_money=flow_money,
other_deposit=other_deposit)
else:
money_plan = "第%s次付息" % (i + 1)
interest_per_time = instance.capital * instance.month_rate
CustomerMoneyBackPlan.objects.create(money_back_plan=instance, money_plan=money_plan,
interest_per_time=interest_per_time,
money_back_date=money_back_date,
stay_car_money=instance.stay_car_money,
flow_money=instance.flow_money,
other_deposit=instance.other_deposit)
month += 1
if month > 12:
year += 1
month -= 12
elif instance.product == "等本等息":
for i in range(instance.loan_months + 1):
"""计算每次收本息字段"""
if i == 0:
money_plan = "放款当天收息"
capital_per_time = 0
interest_per_time = instance.capital * instance.month_rate
money_back_date = datetime.date(year, month, day)
CustomerMoneyBackPlan.objects.create(money_back_plan=instance, money_plan=money_plan,
capital_per_time=capital_per_time,
interest_per_time=interest_per_time,
money_back_date=money_back_date,
stay_car_money=instance.stay_car_money,
flow_money=instance.flow_money,
other_deposit=instance.other_deposit)
else:
money_plan = "第%s次收本息" % i
capital_per_time = instance.capital / instance.loan_months
interest_per_time = instance.capital * instance.month_rate
money_back_date = datetime.date(year, month, day - 1)
CustomerMoneyBackPlan.objects.create(money_back_plan=instance, money_plan=money_plan,
capital_per_time=capital_per_time,
interest_per_time=interest_per_time,
money_back_date=money_back_date,
stay_car_money=instance.stay_car_money,
flow_money=instance.flow_money,
other_deposit=instance.other_deposit)
month += 1
if month > 12:
year += 1
month -= 12
Django后台数据库自动生成关联表中的记录
最新推荐文章于 2022-08-17 21:26:33 发布