• crm项目建表(django自带认证、分页、插件功能):


    from django.db import models
    #导入django自带的用户认证模块:
    from django.contrib.auth.models import User

    # Create your models here.

    class UserProfile(models.Model):
    """用户信息表"""
    #文件关联:
    user = models.ForeignKey(User)
    name = models.CharField(max_length=64,verbose_name="姓名") #verbose_name是admin提示
    role = models.ManyToManyField("Role",blank=True,null=True) #多对多
    def __str__(self):
    """
    :return: 返回文本
    """
    return self.name

    class Role(models.Model):
    """角色表"""
    name = models.CharField(max_length=64,unique=True)
    def __str__(self):
    return self.name

    class CustomerInfo(models.Model):
    """客户信息表"""
    name = models.CharField(max_length=64,default=None)
    contact_type_choices = ((0,"qq"),(1,"微信"),(2,"手机"))
    contact_type = models.SmallIntegerField(choices=contact_type_choices,default=0) #SmallIntegerField小整数、0-65535
    contact = models.CharField(max_length=64,unique=True)
    source_choices = ((0,"QQ群"),
    (1,"51CTO"),
    (2,"百度推广"),
    (3,"知乎"),
    (4,"转介绍"),
    (5,"其他"),
    )
    source = models.SmallIntegerField(choices=source_choices)
    referral_from = models.ForeignKey("self",blank=True,null=True,verbose_name="转介绍")
    consult_courses = models.ManyToManyField("Course",verbose_name="咨询课程")
    consult_content = models.TextField(verbose_name="咨询内容")
    status_choices = ((0,"未报名"),(1,"已报名"),(2,"已退学"))
    status = models.SmallIntegerField(choices=status_choices)
    consultant = models.ForeignKey("UserProfile",verbose_name="课程顾问")
    date = models.DateField(auto_now_add=True)
    def __str__(self):
    return self.name

    class Student(models.Model):
    """学员表"""
    customer = models.ForeignKey("CustomerInfo")
    class_grades = models.ManyToManyField("ClassList")
    def __str__(self):
    return self.customer

    class CustomerFollowUp(models.Model):
    """客户跟踪记录表"""
    customer = models.ForeignKey("CustomerInfo")
    content = models.TextField(verbose_name="跟踪内容")
    user = models.ForeignKey("UserProfile",verbose_name="跟进人")
    status_choices = ((0,"近期无报名计划"),
    (1,"一个月内报名"),
    (2,"2周内报名"),
    (3,"已报名"),
    )
    status = models.SmallIntegerField(choices=status_choices)
    date = models.DateField(auto_now_add=True)
    def __str__(self):
    return self.content

    class Course(models.Model):
    """课程表"""
    name = models.CharField(verbose_name="课程名称",max_length=64,unique=True)
    price = models.PositiveSmallIntegerField() #PositiveSmallIntegerField必须为正
    period = models.PositiveSmallIntegerField(verbose_name="课程周期(月)",default=5) #period周期/句号
    outline = models.TextField(verbose_name="大纲")
    def __str__(self):
    return self.name

    class ClassList(models.Model):
    """班级列表"""
    branch = models.ForeignKey("Branch")
    course = models.ForeignKey("Course")
    class_type_choices = ((0,"脱产"),
    (1,"周末"),
    (2,"网络班"),
    )
    class_type = models.SmallIntegerField(choices=class_type_choices,default=0)
    semester = models.SmallIntegerField(verbose_name="学期")
    teachers = models.ManyToManyField("UserProfile",verbose_name="讲师")
    start_date = models.DateField("开班日期")
    graduate_date = models.DateField("毕业日期",blank=True,null=True)
    def __str__(self):
    return "%s(%s)期" %(self.course.name,self.semester)
    class Meta:
    """联合唯一"""
    unique_together = ("branch","class_type","course","semester") #unique_together联合唯一

    class CourseRecord(models.Model):
    """上课记录"""
    class_grate = models.ForeignKey("ClassList",verbose_name="上课班级")
    day_num = models.PositiveSmallIntegerField(verbose_name="课程节次")
    teacher = models.ForeignKey("UserProfile")
    title = models.CharField("本节主题",max_length=64)
    content = models.TextField("本节内容")
    has_homework = models.BooleanField("本节有作业",default=True)
    homework = models.TextField("作业需求",blank=True,null=True)
    date = models.DateTimeField(auto_now_add=True) #DateTimeField日期时间字段
    def __str__(self):
    return "%s第(%s)节" %(self.class_grate,self.day_num)
    class Meta:
    unique_together = ("class_grades","day_num")

    class StudyRecord(models.Model):
    """学习记录表"""
    course_record = models.ForeignKey("CourseRecord")
    student = models.ForeignKey("Student")
    score_choices = ((100,"A+"),
    (90,"A"),
    (85,"B+"),
    (80,"B"),
    (75,"B-"),
    (70,"C+"),
    (60,"C"),
    (40,"C-"),
    (-50,"D"),
    (0,"N/A"), #N/A是not avaliable
    (-100,"COPY"),
    )
    score = models.SmallIntegerField(choices=score_choices,default=0)
    show_choices = ((0,"缺勤"),
    (1,"已签到"),
    (2,"迟到"),
    (3,"早退"),
    )
    show_status = models.SmallIntegerField(choices=show_choices,default=1)
    note = models.TextField("成绩备注",blank=True,null=True,max_length=1024)
    date = models.DateTimeField(auto_now_add=True)
    def __str__(self):
    return "%s %s %s" %(self.course_record,self.student,self.score)

    class Branch(models.Model):
    """校区"""
    name = models.CharField(max_length=64,unique=True)
    addr = models.CharField(max_length=128,blank=True,null=True)
    def __str__(self):
    return self.name
  • 相关阅读:
    sys模块
    os模块
    datetime模块
    time模块

    random模块
    python文件两种用途
    模块的搜索路径
    如何修改cnblogs的文本编辑器
    socket状态
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12120007.html
Copyright © 2020-2023  润新知