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)
本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...
随机推荐
- 一条随手的Arduino sketch优化 以Examples-02.Digital-Debounce为例
1 const int buttonPin = 2; 2 const int ledPin = 13; 3 4 int ledState = HIGH; 5 int buttonState; 6 in ...
- 痞子衡嵌入式:我为2021 TencentOS Tiny AIoT应用创新大赛做了场直播培训
TencentOS Tiny AIoT 应用创新大赛是腾讯 TencentOS 团队联合恩智浦半导体.安谋科技(Arm China)发起的线上开发者活动,主要面向中小企业嵌入式工程师.广大嵌入式开发者 ...
- Linux 用户密码不能设置问题
当我们有时候要更改linux账户密码时,有时候会遇到下面这种情况: Password has been already used. Choose another.passwd: Have exhaus ...
- Activiti7开发(三)-流程实例
目录 0.前言 1.创建流程实例 2.撤销申请(未实现) 3.查看审批历史(流程实例) 4.查看审批高亮图 0.前言 流程实例是与业务相关联的,先介绍一下业务:用户申请物品,领导进行审批(同意/拒绝) ...
- singleflight 使用记录以及源码阅读
singleflight 使用方法以及源码阅读 1.简介 安装方式: go get -u golang.org/x/sync/singleflight singleflight 是Go官方扩展同步包的 ...
- day09-拦截器&文件上传
拦截器&文件上传 1.拦截器-Interceptor 1.1拦截器概念 拦截器 拦截器(Interceptor):是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行. ...
- TCC 分布式事务解决方案
更多内容,前往 IT-BLOG 一.什么是 TCC事务 TCC 是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try.确认Confirm.撤销Canc ...
- 2020寒假学习笔记15------Spark基础实验
今天又开始重新做实验六,第一题做的比较顺利,运行结果如下: 等到第二题就出现了各种各样的错误,开始运行telnet localhost 44444命令时出现bash: telnet: command ...
- Windows的压缩文件夹(zip/cab)
https://weibo.com/1114096665/DtHXgvnva #windows10# 硬要把zip.cab文件当文件夹,不爽怎么解决? 删除注册表 "HKEY_CLASSES ...
- AtCoder Beginner Contest 061 - D Score Attack
给定一张边带权的有向图.从节点\(1\)出发,每经过一条边一次,得分加上这条边的边权.(可以多次经过,多次累加 必须在点\(n\)结束游戏 判断是否能使得分无限大,如果否,求最大得分. sol 题目所 ...