一、本节目标
前几节我们开发了数据展示,增删改查,本节开始开发业务流程,报名流程。
二、需求分析
1、报名流程如以下描述:
销售 发起报名流程,选择班级,发报名链接给学员
学员 填写在线报名表,提交个人信息,上传证件信息,同意培训协议
销售 审核报名表,审核通过后,创建一条缴费记录,自动把学员添加到相应的班级,报名成功
三、功能开发
1、表设计
因为需要存储学生报名,缴费信息,因此需要设计表结构,同时合同信息也需要表来存储,因此添加model
class ContractTemplate(models.Model):
'''存储合同模板'''
name = models.CharField(max_length=64)
content = models.TextField()
date = models.DateField(auto_now_add=True)
class StudentEnrollment(models.Model):
'''学员报名表'''
customer = models.ForeignKey('CustomerInfo',on_delete=models.CASCADE)
class_grade = models.ForeignKey('ClassList',on_delete=models.CASCADE)
consultant = models.ForeignKey('UserProfile',on_delete=models.CASCADE)
contract_agreed = models.BooleanField(default=False)
contract_signed_date = models.DateTimeField(blank=True,null=True)
contract_approved = models.BooleanField(default=False)
contract_approved_date = models.DateTimeField('合同审核时间',blank=True,null=True)
class Meta:
unique_together = ('customer','class_grade')
def __str__(self):
return '%s'%self.customer
class PaymentRecord(models.Model):
'''存储学员缴费记录'''
enrollment = models.ForeignKey('StudentEnrollment',on_delete=models.CASCADE)
payment_type_choices = ((0,'报名费'),(1,'学费'),(2,'退费'))
payment_type = models.SmallIntegerField(choices=payment_type_choices,default=0)
amount = models.IntegerField('费用',default=500)
consultant = models.ForeignKey('Use