Django后台数据库自动生成关联表中的记录

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

猜你喜欢

转载自blog.csdn.net/layswift/article/details/80287477