标签:branch 接下来 mis lis 操作 mount size 环境 add
1 from django.db import models 2 from django.contrib.auth.models import User 3 # Create your models here. 4 5 6 class Customer(models.Model): 7 ‘‘‘客户信息表‘‘‘ 8 name = models.CharField(max_length=32,blank=True,null=True) 9 qq = models.CharField(max_length=64,unique=True) 10 qq_name = models.CharField(max_length=64,blank=True,null=True) 11 phone = models.CharField(max_length=64,blank=True,null=True) 12 source_choices = ((0,‘转介绍‘), 13 (1,‘QQ群‘), 14 (2,‘官网‘), 15 (3,‘百度推广‘), 16 (4,‘51CTO‘), 17 (5,‘知乎‘), 18 (6,‘市场推广‘) 19 ) 20 21 source = models.SmallIntegerField(choices=source_choices) 22 referral_from = models.CharField(verbose_name="转介绍人qq",max_length=64,blank=True,null=True) 23 24 consult_course = models.ForeignKey("Course",verbose_name="咨询课程") 25 content = models.TextField(verbose_name="咨询详情") 26 tags = models.ManyToManyField("Tag",blank=True,null=True) 27 status_choices = ((0,‘已报名‘), 28 (1,‘未报名‘), 29 ) 30 status = models.SmallIntegerField(choices=status_choices,default=1) 31 consultant = models.ForeignKey("UserProfile") 32 memo = models.TextField(blank=True,null=True) 33 date = models.DateTimeField(auto_now_add=True) 34 35 def __str__(self): 36 return self.qq 37 38 class Meta: 39 verbose_name ="客户表" 40 verbose_name_plural ="客户表" 41 42 class Tag(models.Model): 43 name = models.CharField(unique=True,max_length=32) 44 45 def __str__(self): 46 return self.name 47 48 class Meta: 49 verbose_name = "标签" 50 verbose_name_plural = "标签" 51 52 class CustomerFollowUp(models.Model): 53 ‘‘‘客户跟进表‘‘‘ 54 customer = models.ForeignKey("Customer") 55 content = models.TextField(verbose_name="跟进内容") 56 consultant = models.ForeignKey("UserProfile") 57 58 intention_choices = ((0,‘2周内报名‘), 59 (1,‘1个月内报名‘), 60 (2,‘近期无报名计划‘), 61 (3,‘已在其它机构报名‘), 62 (4,‘已报名‘), 63 (5,‘已拉黑‘), 64 ) 65 intention = models.SmallIntegerField(choices=intention_choices) 66 date = models.DateTimeField(auto_now_add=True) 67 68 def __str__(self): 69 return "<%s : %s>" %(self.customer.qq,self.intention) 70 71 72 class Meta: 73 verbose_name = "客户跟进记录" 74 verbose_name_plural = "客户跟进记录" 75 76 class Course(models.Model): 77 ‘‘‘课程表‘‘‘ 78 name = models.CharField(max_length=64,unique=True) 79 price = models.PositiveSmallIntegerField() 80 period = models.PositiveSmallIntegerField(verbose_name="周期(月)") 81 outline = models.TextField() 82 83 def __str__(self): 84 return self.name 85 86 class Meta: 87 verbose_name = "课程表" 88 verbose_name_plural = "课程表" 89 90 class Branch(models.Model): 91 ‘‘‘校区‘‘‘ 92 name = models.CharField(max_length=128,unique=True) 93 addr = models.CharField(max_length=128) 94 def __str__(self): 95 return self.name 96 97 98 class Meta: 99 verbose_name = "校区" 100 verbose_name_plural = "校区" 101 102 class ClassList(models.Model): 103 ‘‘‘班级表‘‘‘ 104 branch = models.ForeignKey("Branch",verbose_name="校区") 105 course = models.ForeignKey("Course") 106 class_type_choices = ((0,‘面授(脱产)‘), 107 (1,‘面授(周末)‘), 108 (2,‘网络班‘) 109 ) 110 class_type = models.SmallIntegerField(choices=class_type_choices,verbose_name="班级类型") 111 semester = models.PositiveSmallIntegerField(verbose_name="学期") 112 teachers = models.ManyToManyField("UserProfile") 113 start_date = models.DateField(verbose_name="开班日期") 114 end_date = models.DateField(verbose_name="结业日期",blank=True,null=True) 115 116 def __str__(self): 117 return "%s %s %s" %(self.branch,self.course,self.semester) 118 119 class Meta: 120 unique_together = (‘branch‘,‘course‘,‘semester‘) 121 verbose_name_plural = "班级" 122 verbose_name = "班级" 123 124 class CourseRecord(models.Model): 125 ‘‘‘上课记录‘‘‘ 126 from_class = models.ForeignKey("ClassList",verbose_name="班级") 127 day_num = models.PositiveSmallIntegerField(verbose_name="第几节(天)") 128 teacher = models.ForeignKey("UserProfile") 129 has_homework = models.BooleanField(default=True) 130 homework_title = models.CharField(max_length=128,blank=True,null=True) 131 homework_content = models.TextField(blank=True,null=True) 132 outline = models.TextField(verbose_name="本节课程大纲") 133 date = models.DateField(auto_now_add=True) 134 135 def __str__(self): 136 return "%s %s" %(self.from_class,self.day_num) 137 138 class Meta: 139 unique_together = ("from_class", "day_num") 140 verbose_name_plural = "上课记录" 141 142 143 class StudyRecord(models.Model): 144 ‘‘‘学习记录‘‘‘ 145 student = models.ForeignKey("Enrollment") 146 course_record = models.ForeignKey("CourseRecord") 147 attendance_choices = ((0,‘已签到‘), 148 (1,‘迟到‘), 149 (2,‘缺勤‘), 150 (3,‘早退‘), 151 ) 152 attendance = models.SmallIntegerField(choices=attendance_choices,default=0) 153 score_choices = ((100,"A+"), 154 (90,"A"), 155 (85,"B+"), 156 (80,"B"), 157 (75,"B-"), 158 (70,"C+"), 159 (60,"C"), 160 (40,"C-"), 161 (-50,"D"), 162 (-100,"COPY"), 163 (0,"N/A"), 164 ) 165 score = models.SmallIntegerField(choices=score_choices,default=0) 166 memo = models.TextField(blank=True,null=True) 167 date = models.DateField(auto_now_add=True) 168 169 def __str__(self): 170 return "%s %s %s" %(self.student,self.course_record,self.score) 171 172 class Meta: 173 unique_together = (‘student‘,‘course_record‘) 174 verbose_name_plural = "学习记录" 175 176 177 class Enrollment(models.Model): 178 ‘‘‘报名表‘‘‘ 179 customer = models.ForeignKey("Customer") 180 enrolled_class = models.ForeignKey("ClassList",verbose_name="所报班级") 181 consultant = models.ForeignKey("UserProfile",verbose_name="课程顾问") 182 contract_agreed = models.BooleanField(default=False,verbose_name="学员已同意合同条款") 183 contract_approved = models.BooleanField(default=False,verbose_name="合同已审核") 184 date = models.DateTimeField(auto_now_add=True) 185 186 def __str__(self): 187 return "%s %s" %(self.customer,self.enrolled_class) 188 189 class Meta: 190 unique_together = ("customer","enrolled_class") 191 verbose_name_plural = "报名表" 192 193 class Payment(models.Model): 194 ‘‘‘缴费记录‘‘‘ 195 customer = models.ForeignKey("Customer") 196 course = models.ForeignKey("Course",verbose_name="所报课程") 197 amount = models.PositiveIntegerField(verbose_name="数额",default=500) 198 consultant = models.ForeignKey("UserProfile") 199 date = models.DateTimeField(auto_now_add=True) 200 201 def __str__(self): 202 return "%s %s" %(self.customer,self.amount) 203 204 class Meta: 205 verbose_name_plural = "缴费记录" 206 207 class UserProfile(models.Model): 208 ‘‘‘账号表‘‘‘ 209 user = models.OneToOneField(User) 210 name = models.CharField(max_length=32) 211 roles = models.ManyToManyField("Role",blank=True,null=True) 212 213 def __str__(self): 214 return self.name 215 216 class Role(models.Model): 217 ‘‘‘角色表‘‘‘ 218 name = models.CharField(max_length=32,unique=True) 219 menus = models.ManyToManyField("Menu",blank=True) 220 221 def __str__(self): 222 return self.name 223 class Meta: 224 verbose_name_plural = "角色" 225 226 227 class Menu(models.Model): 228 ‘‘‘菜单‘‘‘ 229 name = models.CharField(max_length=32) 230 url_name = models.CharField(max_length=64) 231 232 def __str__(self): 233 return self.name
1 from django.contrib import admin 2 from crm import models 3 4 admin.site.register(models.Customer) 5 admin.site.register(models.CustomerFollowUp) 6 admin.site.register(models.Enrollment) 7 admin.site.register(models.Course) 8 admin.site.register(models.ClassList) 9 admin.site.register(models.CourseRecord) 10 admin.site.register(models.Branch) 11 admin.site.register(models.Role) 12 admin.site.register(models.Payment) 13 admin.site.register(models.StudyRecord) 14 admin.site.register(models.Tag) 15 admin.site.register(models.UserProfile) 16 admin.site.register(models.Menu)
View Code
Python manage.py makemigrations python manage.py migrate
C:\Users\MrTong\Desktop\django\EasyCRM>Python manage.py makemigrations System check identified some issues: WARNINGS: crm.Customer.tags: (fields.W340) null has no effect on ManyToManyField. crm.UserProfile.roles: (fields.W340) null has no effect on ManyToManyField. Migrations for ‘crm‘: crm\migrations\0001_initial.py - Create model Branch - Create model ClassList - Create model Course - Create model CourseRecord - Create model Customer - Create model CustomerFollowUp - Create model Enrollment - Create model Menu - Create model Payment - Create model Role - Create model StudyRecord - Create model Tag - Create model UserProfile - Add field consultant to payment - Add field course to payment - Add field customer to payment - Add field consultant to enrollment - Add field customer to enrollment - Add field enrolled_class to enrollment - Add field consultant to customerfollowup - Add field customer to customerfollowup - Add field consultant to customer - Add field tags to customer - Add field teacher to courserecord - Add field course to classlist - Add field teachers to classlist - Alter unique_together for studyrecord (1 constraint(s)) - Alter unique_together for enrollment (1 constraint(s)) - Alter unique_together for courserecord (1 constraint(s)) - Alter unique_together for classlist (1 constraint(s)) C:\Users\MrTong\Desktop\django\EasyCRM>Python manage.py migrate System check identified some issues: WARNINGS: crm.Customer.tags: (fields.W340) null has no effect on ManyToManyField. crm.UserProfile.roles: (fields.W340) null has no effect on ManyToManyField. Operations to perform: Apply all migrations: admin, auth, contenttypes, crm, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying crm.0001_initial... OK Applying sessions.0001_initial... OK
生成数据表
创建管理用户 (密码不能纯数字)
Python manage.py createsuperuser
C:\Users\MrTong\Desktop\django\EasyCRM>python manage.py createsuperuser System check identified some issues: WARNINGS: crm.Customer.tags: (fields.W340) null has no effect on ManyToManyField. crm.UserProfile.roles: (fields.W340) null has no effect on ManyToManyField. Username (leave blank to use ‘mrtong‘): Email address: abc@qq.com Password: Password (again): Superuser created successfully.
class CustomerAdmin(admin.ModelAdmin): list_display = (‘id‘,‘qq‘,‘source‘,‘consultant‘,‘content‘,‘status‘,‘date‘) list_filter = (‘source‘,‘consultant‘,‘date‘) search_fields = (‘qq‘,‘name‘) raw_id_fields = (‘consult_course‘,) filter_horizontal = (‘tags‘,) list_editable = (‘status‘,) class UserProfileAdmin(admin.ModelAdmin): list_display = (‘user‘,‘name‘) admin.site.register(models.Customer,CustomerAdmin) admin.site.register(models.UserProfile,UserProfileAdmin)
效果显而易见
标签:branch 接下来 mis lis 操作 mount size 环境 add
原文地址:http://www.cnblogs.com/tongchengbin/p/7672952.html