Django4全栈进阶之路21 项目实战(在线报修):创建App应用和Model模型
- 创建应用App
python manage.py startapp RepairApp
- 创建模型
在models.py文件中定义一个Repair模型来表示报修单,其中包含以下字段:
- repair_id: 报修单号
- repair_time: 报修时间
- repair_person: 报修人
- problem_description: 问题描述
- service_person: 接单人
- response_time: 首次回应时间
- progress: 处理进度
from django.db import models # Create your models here.
from django.db import models
import datetime from django.db.models.signals import pre_save
from django.dispatch import receiver # 报修单状态choices
STATUS_CHOICES = (
('1', '待受理'),
('2', '处理中'),
('3', '已完成'),
('4', '已撤销'),
) class Repair(models.Model):
repair_id = models.CharField(max_length=20, unique=True, verbose_name="报修单号")
repair_time = models.DateTimeField(auto_now_add=True, verbose_name="报修时间")
emp_id = models.CharField(max_length=20)
repair_person = models.CharField(max_length=20, verbose_name="报修人")
repair_description = models.TextField(verbose_name="问题描述")
receiver = models.CharField(max_length=20, verbose_name="接单人", null=True, blank=True)
first_response_time = models.DateTimeField(null=True, blank=True, verbose_name="首次回应时间")
process_status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='1', verbose_name="处理进度")
created_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
update_time = models.DateTimeField(auto_now=True, verbose_name="最后修改时间") def __str__(self):
return self.repair_id class Meta:
verbose_name = "报修单"
verbose_name_plural = "报修单"
ordering = ['-repair_time'] @receiver(pre_save, sender=Repair)
def auto_generate_repair_id(sender, instance, **kwargs):
if not instance.repair_id:
# 生成年月
year_month = datetime.datetime.now().strftime("%Y%m")
# 查找当月最大的流水号
last_repair = Repair.objects.filter(repair_id__startswith=year_month).order_by('-repair_id').first()
if last_repair:
# 如果存在,流水号为最大报修单号加1
max_id = int(last_repair.repair_id[-4:])
new_id = f"{year_month}{max_id + 1:04}"
else:
# 如果不存在,流水号从0001开始
new_id = f"{year_month}0001"
instance.repair_id = new_id
Django4全栈进阶之路21 项目实战(在线报修):创建App应用和Model模型的更多相关文章
- Python Django CMDB项目实战之-2创建APP、建模(models.py)、数据库同步、高级URL、前端页面展示数据库中数据
基于之前的项目代码来编写 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页index页文章页面 现在我们修改一个文章列表是从数据库中获取数据, 下面我们就需 ...
- Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示
基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...
- web前端全栈学习之路
web前端全栈学习之路 --- 陆续更新中 一.HTML相关 1.HTML常用标签:http://www.cnblogs.com/wyb666/p/8733699.html 2.HTML5基础: 3. ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- 你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦
你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦
- C#.Net全栈工程师之路-学习路径
C#.Net全栈工程师之路-学习路径 按架构分: C/S架构: B/S架构: Mobile移动开发: 按技术点分: C#编程基础以及OOP面向对象编程: 数据库基础以及高级应用(MYSQL+MSSQL ...
- 战争热诚的python全栈开发之路
从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...
- Python全栈开发之路 【第四篇】:Python基础之函数
本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...
- Python全栈开发之路 【第一篇】:Python 介绍
本节内容 一.Python介绍 python的创始人为荷兰人——吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...
- Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)
本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...
随机推荐
- SQL无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突
在所在的SQL语句后面加上 COLLATE [排序规则]或者ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS
- 《MySQL是怎样运行的》第八章小结
- 如何使用webgl(three.js)实现3D消防、3D建筑消防大楼、消防数字孪生、消防可视化解决方案——第十八课(一)
序: 又是很久没出随笔文章了,一篇文章有时候整理一天,实在是抽不出来时间. 最近在回顾几年前的项目时,发现这个智慧三维消防可视化项目很有回顾价值,索性就拿出来讲讲. 首先,我们要知道消防里的知识,不是 ...
- MySQL学习(五)事务
参考博客:https://www.cnblogs.com/kismetv/p/10331633.html 0.提交和回滚 注:mysql默认自动开启了事务. -- 手动开启事务 start trans ...
- 自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符
学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下. 一.向屏幕输出一个字符mbr4.asm mbr4.asm中的代码如下: ;将屏幕第一行 ...
- find和filter有什么区别
JavaScript 在 ES6 上有很多数组方法,每种方法都有独特的用途和好处. 在开发应用程序时,大多使用数组方法来获取特定的值列表并获取单个或多个匹配项. 在列出这两种方法的区别之前,我们先来一 ...
- 云原生K8S精选的分布式可靠的键值存储etcd原理和实践
@ 目录 概述 定义 应用场景 特性 为何使用etcd 术语 架构 原理 读操作 写操作 日志复制 部署 单示例快速部署 多实例集群部署 静态 etcd 动态发现 常见命令 概述 定义 etcd 官网 ...
- kubernetes(k8s)安装命令行自动补全功能
Ubuntu下安装命令 root@master1:~# apt install -y bash-completion Reading package lists... Done Building de ...
- python模拟鼠标键盘操作
前言 1 懒人,工作中可以模拟真人操作,不用自己点击 2游戏人员 这是做模拟外挂的必备知识,不管手机还是电脑游戏,尤其副本 准备模块 代码如下: 实现了一个最简单的输入密码,enter进入的登录过程 ...
- 微信Token验证代码的实现
微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...