• 代码d17


    admin。py

    from django.contrib import admin
    from crm import models
    # Register your models here.
    
    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.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,UserProfileAdmin)
    admin.site.register(models.Menu)
    

      apps.py

    from django.apps import AppConfig
    
    
    class CrmConfig(AppConfig):
        name = 'crm'
    

      models.py

    from django.db import models
    from django.contrib.auth.models import User
    # 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
    

      urls.py

    from django.conf.urls import url
    from crm import views
    
    urlpatterns = [
        url(r'^$', views.index,name="sales_index"),
        url(r'^customers/$', views.customer_list,name="customer_list"),
    ]
    

      views.py

    from django.shortcuts import render
    
    # Create your views here.
    
    
    def index(request):
    
        return render(request,"index.html")
    
    def customer_list(request):
        return render(request,"sales/customers.html")
    

      

  • 相关阅读:
    python爬虫统计上证指数周、月涨跌现象
    python每日一题:采用正则表达式,beautifulsoap,xpath爬取网站数据
    谈股市与月份的关系
    python之正则表达式
    python每日一题:使用代理服务器爬虫
    python之cookie使用
    python每日一题:爬虫入门之利用xpath查找网页元素节点
    python每日一题:制作网页,与女朋友的点点滴滴
    【Java基础】Java11 新特性
    【Java基础】Java10 新特性
  • 原文地址:https://www.cnblogs.com/cerofang/p/8519686.html
Copyright © 2020-2023  润新知