Django之CRM项目Day6-公私户转换问题解决 班主任功能
1.解决公户转私户的问题
数据库中加锁:
begin; 开始事务
select * from user where id=1 for update; 加锁
commit; 结束事务
django中加锁:
with transaction.atomic():
# 查询出数据加锁
queryset = models.Customer.objects.filter(id__in=ids, consultant__isnull=True).select_for_update() # 加锁
if len(ids) == queryset.count():
queryset.update(consultant=self.request.account)
return
return HttpResponse('你的手速太慢了,已经被别人抢走了')
设置数量的上限
2.班主任的功能:
-班级的管理
form的__all__在前端的显示 {{ form_obj.non_field_errors.0 }}
-课程记录的管理
-学习记录的管理
# 批量创建
list1 = []
for student in all_students:
list1.append(models.StudyRecord(course_record=course_record_obj, student=student))
models.StudyRecord.objects.bulk_create(list1)
modelformset
# 生成FormSet的类
FormSet = modelformset_factory(models.StudyRecord, StudyRecordForm, extra=0)
# 查询的数据
all_study_record = models.StudyRecord.objects.filter(course_record_id=course_record_id)
# modelformset对象
form_obj = FormSet(queryset=all_study_record)
form_obj = FormSet(request.POST, queryset=all_study_record)
form_obj.is_valid()
form_obj.save()
# 错误提示
form_obj.errors
{{ form.instance }} ——》 每一个数据 对应的对象
{{ form.instance.student }} —— 》 值
{{ form.attendance }} —— 》 input框 select框
注意:
{{ form_obj.management_form }}
每一行要有 {{ form.id }}
Django之CRM项目Day6-公私户转换问题解决 班主任功能的更多相关文章
- Django之CRM项目Day4-编辑客户 公私户 模糊查询
1.增加客户 2.编辑客户 obj = models.Customer.objects.filter(pk=edit_id).first() form_obj = CustomerForm(insta ...
- Django之CRM项目Day3-客户展示及分页
1.展示客户 模板的查找顺序: 先找全局的templates--> 按照app的注册顺序找templates中的文件 使用admin添加数据: 创建超级用户 python manage.py ...
- 源码安装python +NGINX 的坎坷路 +uwsgi安装 部署django 的CRM项目
一.Nginx安装(基于ubuntu17.10 版本) 首先我们是基于源码安装,主要有如下步骤 1.安装依赖包 1.安装gcc g++的依赖库 sudo apt-get install build-e ...
- Django之CRM项目Day5-跳转页面 跟进记录 报名记录
1 编辑和添加后跳转页面: 思路:写一个参数将路径的条件带上 注意:捋流程的时候从urls里开始 1.在crm文件夹下新建python包:templatetags,在包里新建url.py: from ...
- CRM项目讲解和django知识点回顾
今天想把之前写的CRM项目梳理下,顺便回顾一下djiango的部分重要知识. 1.登录页面(包含简单验证码) 首先来看下CRM的登录页面,样式啥的不重要,大家可以去jquery ui的网站上或者其他地 ...
- Django - CRM项目(2)Q查询(模糊查询)
一.CRM项目(2) 利用Q查询中的q对象完成条件筛选功能. 批量删除.公户转私户功能. 新增一张跟进记录表ConsultRecord,迁移数据库并添加测试数据,实现跟进记录列表页面. 客户列表新增跟 ...
- Django - CRM项目(3)
一.CRM项目的业务逻辑与表结构梳理 1.分析业务逻辑 (1) 引流(sem) (2) 网络咨询师(客服):添加客户信息和查看客户,分配销售 (3) 销售:查看私户 添加跟进记录 失败:加入公户 成功 ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- 使用Django完成CRM管理系统
CRM介绍: CRM即客户关系管理,是指企业用CRM技术来管理与客户之间的关系.在不同场合下,CRM可能是一个管理学术语,可能是一个软件系统.通常所指的CRM,指用计算机自动化分析销售.市场营销.客户 ...
随机推荐
- js 获取当前时间 年月日
var datetime = new Date(); var year = datetime.getFullYear(); var month = datetime.getMonth() + 1 &l ...
- Linux安装Gitlab,附iSCSI分区挂载说明
因为Gitlab数据要存放在共享存储,所以本次配置的重头戏倒变成了挂载ISCSI了. OS:CentOS 7.2IP:172.16.1.191/192.168.2.191 iSCSI分Target(服 ...
- String:字符串常量池
String:字符串常量池 作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以下三个问题,去理解字符串常量池: 字 ...
- Surface Pro 4 系统优化全教程及QA
甲.如何根据你的需求选择相应版本的surface1.Core M3-6Y30,Core i5-6300U,Core i7-6650U的性能差距有多大?2.HD 515,HD520,Iris 540的性 ...
- JavaScript深入系列(一)--原型和原型链详解
构造函数创建对象 首先我们先使用构造函数创建一个对象: function Person(){} var person = new Person(); person.name = 'tom'; cons ...
- matlab 下标类型
double int uint time: double = int < uint8 较为神奇. clear clc time=clock; a=zeros(,); : a(i)=; end f ...
- Android studio自带的sample例子
1. 直接查看Github上面的Sample Sample in GitHub: 点击打开链接 2. FQ下载(个人倾向于下载) 需要FQ工具 goagent goagent在windows下的安装 ...
- 使用postman测试hystrix
当在浏览器发送多次请求检测hystrix的作用时,我们可以使用postman来自动发送多次请求: 1.将链接保存到一个collection中 2.点击runner 3.设定运行次数
- node.js(基础四)_express基础
一.前言 本次内容主要包括: 1.express的基本用法 2.express中的静 ...
- C++ MFC------ 快捷键
创建快捷键 该文讲解如何给dialog的菜单或者按钮添加快捷键. 1.局部快捷键 点击控件,右键点“属性”,在属性Caption后添加&Key,例如: &Y,即通过按Alt+Y即可触发 ...