码迷,mamicode.com
首页 > 数据库 > 详细

day3 CRM admin 数据库表完成

时间:2017-11-04 22:28:14      阅读:628      评论:0      收藏:1      [点我收藏+]

标签:close   serve   基本配置   status   none   super   title   bool   mem   

基本配置

1.创建项目

  • 终端命令:
  • D:\PycharmProjects>django-admin startproject PerfectCRM2
  • IDE创建Django程序时,本质上都是自动执行上述命令

 技术分享

 

2.创建app应用

  • 终端命令
D:\PycharmProjects\PerfectCRM2>python manage.py startapp crm

 

  •  setting 注册app

    技术分享

 

3.启动django项目

  • 终端命令:8080 端口运行
  • D:\PycharmProjects\PerfectCRM2>python manage.py runserver 8080

     

  • IDE

    技术分享

 

   浏览器访问:http://127.0.0.1:8080/

     技术分享

 

 

 



 

 

admin 配置

 

1.在admin中执行如下配置

from django.contrib import admin
from crm import models

admin.site.register(models.Customer)
admin.site.register(models.CustomerFollowUp)
admin.site.register(models.Enrollment)
admin.site.register(models.Course)
admin.site.register(models.ClassList)
admin.site.register(models.CourseRecord)
admin.site.register(models.Branch)
admin.site.register(models.Role)
admin.site.register(models.Payment)
admin.site.register(models.StudyRecord)
admin.site.register(models.Tag)
admin.site.register(models.UserProfile)
admin.site.register(models.Menu)

 

 

2..数据库表结构创建  

设置数据表名称

  crm-> modle.py  (注意UTF-8)

 技术分享技术分享

技术分享
from django.db import models
from django.contrib.auth.models import User   #继承Django自带的认证用户
# Create your models here.


class Customer(models.Model):
    ‘‘‘客户信息表‘‘‘
    name = models.CharField(max_length=32,blank=True,null=True)
    qq = models.CharField(max_length=64,unique=True)
    qq_name = models.CharField(max_length=64,blank=True,null=True)
    phone = models.CharField(max_length=64,blank=True,null=True)
    source_choices = ((0,转介绍),
                      (1,QQ群),
                      (2,官网),
                      (3,百度推广),
                      (4,51CTO),
                      (5,知乎),
                      (6,市场推广)
                      )

    source = models.SmallIntegerField(choices=source_choices)
    referral_from = models.CharField(verbose_name="转介绍人qq",max_length=64,blank=True,null=True)

    consult_course = models.ForeignKey("Course",verbose_name="咨询课程")
    content = models.TextField(verbose_name="咨询详情")
    tags = models.ManyToManyField("Tag",blank=True,null=True)
    status_choices = ((0,已报名),
                      (1,未报名),
                      )
    status = models.SmallIntegerField(choices=status_choices,default=1)
    consultant = models.ForeignKey("UserProfile")
    memo = models.TextField(blank=True,null=True)
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.qq

    class Meta:
        verbose_name ="客户表"
        verbose_name_plural ="客户表"

class Tag(models.Model):
    name = models.CharField(unique=True,max_length=32)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "标签"
        verbose_name_plural = "标签"

class CustomerFollowUp(models.Model):
    ‘‘‘客户跟进表‘‘‘
    customer = models.ForeignKey("Customer")
    content = models.TextField(verbose_name="跟进内容")
    consultant = models.ForeignKey("UserProfile")

    intention_choices  = ((0,2周内报名),
                          (1,1个月内报名),
                          (2,近期无报名计划),
                          (3,已在其它机构报名),
                          (4,已报名),
                          (5,已拉黑),
                          )
    intention = models.SmallIntegerField(choices=intention_choices)
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "<%s : %s>" %(self.customer.qq,self.intention)


    class Meta:
        verbose_name = "客户跟进记录"
        verbose_name_plural = "客户跟进记录"

class Course(models.Model):
    ‘‘‘课程表‘‘‘
    name = models.CharField(max_length=64,unique=True)
    price = models.PositiveSmallIntegerField()
    period = models.PositiveSmallIntegerField(verbose_name="周期(月)")
    outline = models.TextField()

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "课程表"
        verbose_name_plural = "课程表"

class Branch(models.Model):
    ‘‘‘校区‘‘‘
    name = models.CharField(max_length=128,unique=True)
    addr = models.CharField(max_length=128)
    def __str__(self):
        return self.name


    class Meta:
        verbose_name = "校区"
        verbose_name_plural = "校区"

class ClassList(models.Model):
    ‘‘‘班级表‘‘‘
    branch = models.ForeignKey("Branch",verbose_name="校区")
    course = models.ForeignKey("Course")
    class_type_choices = ((0,面授(脱产)),
                          (1,面授(周末)),
                          (2,网络班)
                          )
    class_type = models.SmallIntegerField(choices=class_type_choices,verbose_name="班级类型")
    semester = models.PositiveSmallIntegerField(verbose_name="学期")
    teachers = models.ManyToManyField("UserProfile")
    start_date = models.DateField(verbose_name="开班日期")
    end_date = models.DateField(verbose_name="结业日期",blank=True,null=True)

    def __str__(self):
        return "%s %s %s" %(self.branch,self.course,self.semester)

    class Meta:
        unique_together = (branch,course,semester)
        verbose_name_plural = "班级"
        verbose_name = "班级"

class CourseRecord(models.Model):
    ‘‘‘上课记录‘‘‘
    from_class = models.ForeignKey("ClassList",verbose_name="班级")
    day_num = models.PositiveSmallIntegerField(verbose_name="第几节(天)")
    teacher = models.ForeignKey("UserProfile")
    has_homework = models.BooleanField(default=True)
    homework_title = models.CharField(max_length=128,blank=True,null=True)
    homework_content = models.TextField(blank=True,null=True)
    outline = models.TextField(verbose_name="本节课程大纲")
    date = models.DateField(auto_now_add=True)

    def __str__(self):
        return "%s %s" %(self.from_class,self.day_num)

    class Meta:
        unique_together = ("from_class", "day_num")
        verbose_name_plural = "上课记录"


class StudyRecord(models.Model):
    ‘‘‘学习记录‘‘‘
    student = models.ForeignKey("Enrollment")
    course_record = models.ForeignKey("CourseRecord")
    attendance_choices = ((0,已签到),
                          (1,迟到),
                          (2,缺勤),
                          (3,早退),
                          )
    attendance = models.SmallIntegerField(choices=attendance_choices,default=0)
    score_choices = ((100,"A+"),
                     (90,"A"),
                     (85,"B+"),
                     (80,"B"),
                     (75,"B-"),
                     (70,"C+"),
                     (60,"C"),
                     (40,"C-"),
                     (-50,"D"),
                     (-100,"COPY"),
                     (0,"N/A"),
                     )
    score = models.SmallIntegerField(choices=score_choices,default=0)
    memo = models.TextField(blank=True,null=True)
    date = models.DateField(auto_now_add=True)

    def __str__(self):
        return "%s %s %s" %(self.student,self.course_record,self.score)

    class Meta:
        unique_together = (student,course_record)
        verbose_name_plural = "学习记录"


class Enrollment(models.Model):
    ‘‘‘报名表‘‘‘
    customer = models.ForeignKey("Customer")
    enrolled_class = models.ForeignKey("ClassList",verbose_name="所报班级")
    consultant = models.ForeignKey("UserProfile",verbose_name="课程顾问")
    contract_agreed = models.BooleanField(default=False,verbose_name="学员已同意合同条款")
    contract_approved = models.BooleanField(default=False,verbose_name="合同已审核")
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "%s %s" %(self.customer,self.enrolled_class)

    class Meta:
        unique_together = ("customer","enrolled_class")
        verbose_name_plural = "报名表"

class Payment(models.Model):
    ‘‘‘缴费记录‘‘‘
    customer = models.ForeignKey("Customer")
    course = models.ForeignKey("Course",verbose_name="所报课程")
    amount = models.PositiveIntegerField(verbose_name="数额",default=500)
    consultant = models.ForeignKey("UserProfile")
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return "%s %s" %(self.customer,self.amount)

    class Meta:
        verbose_name_plural = "缴费记录"

class UserProfile(models.Model):
    ‘‘‘账号表‘‘‘
    user = models.OneToOneField(User)
    name = models.CharField(max_length=32)
    roles = models.ManyToManyField("Role",blank=True,null=True)

    def __str__(self):
        return self.name

class Role(models.Model):
    ‘‘‘角色表‘‘‘
    name = models.CharField(max_length=32,unique=True)
    menus = models.ManyToManyField("Menu",blank=True)

    def __str__(self):
        return self.name
    class Meta:
        verbose_name_plural = "角色"


class Menu(models.Model):
    ‘‘‘菜单‘‘‘
    name = models.CharField(max_length=32)
    url_name = models.CharField(max_length=64)

    def __str__(self):
        return self.name
View Code

 

 3.

在 models.py 使用了 Django自带的认证用户

from django.contrib.auth.models import User   #继承Django自带的认证用户

class UserProfile(models.Model):
    ‘‘‘账号表‘‘‘
    user = models.OneToOneField(User)
    name = models.CharField(max_length=32)
    roles = models.ManyToManyField("Role",blank=True,null=True)

    def __str__(self):
        return self.name

 

 

在admin.py添加默认配置

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)

 

 

4.生成数据库表

D:\PycharmProjects\PerfectCRM2>python manage.py makemigrations
D:\PycharmProjects\PerfectCRM2>python manage.py migrate

技术分享

 

 

 

 配置django admin 后台管理页面

 

1.创建后台管理员

D:\PycharmProjects\PerfectCRM2>python manage.py createsuperuser

error:django.db.utils.OperationalError: no such table: auth_user
#没有添加Django自带的认证用户
D:\PycharmProjects\PerfectCRM2>python manage.py createsuperuser

Username (leave blank to use redhat): redhat
Email address: 71****940@qq.com
Password:redhat@qq.com
Password (again):
Superuser created successfully.

 

2.配置url (默认的即可)

技术分享

urlpatterns = [
    url(r^admin/, admin.site.urls),
]

 

 

3.注册和配置django admin后台管理页面

 

 

启动项目,登录成功

技术分享

 

day3 CRM admin 数据库表完成

标签:close   serve   基本配置   status   none   super   title   bool   mem   

原文地址:http://www.cnblogs.com/venicid/p/7784749.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!