#_*_coding:utf-8_*_
from django.db importmodels#Create your models here.
#Django练习小项目:学员管理系统设计开发#带着项目需求学习是最有趣和效率最高的,今天就来基于下面的需求来继续学习Django#
#项目需求:#
#1.分讲师\学员\课程顾问角色,#2.学员可以属于多个班级,学员成绩按课程分别统计#3.每个班级至少包含一个或多个讲师#4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员#5.客户要有咨询纪录, 后续的定期跟踪纪录也要保存#6.每个学员的所有上课出勤情况\学习成绩都要保存#7.学校可以有分校区,默认每个校区的员工只能查看和管理自己校区的学员#8.客户咨询要区分来源
#Create your models here.
from django.core.exceptions importValidationErrorfrom django.db importmodelsfrom django.contrib.auth.models importUser
class_type_choices= (('online',u'网络班'),
('offline_weekend',u'面授班(周末)',),
('offline_fulltime',u'面授班(脱产)',),
)#1用户表(讲师,销售,课程顾问,学校工作人员)
class UserProfile(models.Model): #UserProfile是对默认基本表User的继承和扩展
user = models.OneToOneField(User) #一对一是外键的特例,下拉框选择一次后,下次就不能再次选择 unique
name = models.CharField(u"姓名",max_length=32)#UserProfile相当于用户详细表,User相当于用户基本表(djangomore默认用户表) 这2个表中name=alex只能是一对一
#在详细表中,创建一条记录是alex,对应基本表的alex;再次创建jack的时候,对应基本表就不能还是alex,必须是jack
#所以用到的是一对一
def __unicode__(self):returnself.namedef __str__(self):returnself.nameclass Meta: #表中文名在admin显示
verbose_name = '校内工作人员表'verbose_name_plural= "校内工作人员表"
#2校区表
classSchool(models.Model):
name= models.CharField(u"校区名称",max_length=64,unique=True) #名字
addr = models.CharField(u"地址",max_length=128) #地址
staffs = models.ManyToManyField('UserProfile',blank=True) #校区和学校工作人员UserProfile 多对多
#一个校区多个讲师 一个讲师(校长、领导)属于多个校区
def __unicode__(self):returnself.namedef __str__(self):returnself.nameclass Meta: #表中文名在admin显示
verbose_name = '校区表'verbose_name_plural= "校区表"
#3课程表
classCourse(models.Model):
name= models.CharField(u"课程名称",max_length=128,unique=True) #课程名字 python linux
price = models.IntegerField(u"面授价格") #面授价格
online_price = models.IntegerField(u"网络班价格") #网络班价格
brief = models