Django - CRM项目(3)

时间:2025-01-05 11:03:56

一、CRM项目的业务逻辑与表结构梳理

1、分析业务逻辑

  (1) 引流(sem)

  (2) 网络咨询师(客服):添加客户信息和查看客户,分配销售

  (3) 销售:查看私户

    添加跟进记录

      失败:加入公户

      成功:缴费,修改状态

Django - CRM项目(3)

  (4)产生的表有:

    员工表,部门表,客户表,跟进记录表,缴费表,报名表

    学生表,班级表,课程记录表,学生学习记录表

2、crm项目进度

  (1)整合优化添加和编辑的代码

  (2)私户转公户

  (3)添加跟进记录

二、补充知识点

1、model模型类中表的自关联

class Customer(models.Model):
"""
客户表
"""
...
introduce_from = models.ForeignKey('Customer', verbose_name="转介绍自学员", blank=True, null=True,on_delete=models.CASCADE)
  # 自关联:与自身表建立关系

2、model模型类中使用联合唯一

class ClassList(models.Model):
"""
班级表
"""
course = models.CharField("课程名称", max_length=64, choices=course_choices)
semester = models.IntegerField("学期")
campuses = models.ForeignKey('Campuses',verbose_name="校区",on_delete=models.CASCADE)
... class Meta:
unique_together = ("course", "semester", 'campuses')# 设置联合唯一字段

3、model中实例化对象时参数auto_now_add=True

class Enrollment(models.Model):
"""
报名表
"""
...
enrolled_date = models.DateTimeField(auto_now_add=True, verbose_name="报名日期") # 表示在生成记录的同时该字段的值自动指定为当前时间

4、字段名__isnull=True

  判断某字段是否为空

5、foreignKey参数limit_choices_to的使用

"""
class ForeignKey(ForeignObject):
...... def __init__(self, to, on_delete, related_name=None, related_query_name=None,
limit_choices_to=None, parent_link=False, to_field=None,
db_constraint=True, **kwargs):
......
"""

 参数limit_choices_to只有当使用modelform时才有意义,表示限制关联表中符合limit_choices_to限制条件的记录,modelform在渲染页面时只显示过滤出来的记录,默认显示全部记录。

  用法:limit_choices_to={"pk":"3"}  # 表示modelform渲染页面时只渲染limit_choices_to中过滤出来的对象。