1. 创建应用App

    • python manage.py startapp RepairApp
  2. 创建模型

    在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模型的更多相关文章

  1. Python Django CMDB项目实战之-2创建APP、建模(models.py)、数据库同步、高级URL、前端页面展示数据库中数据

    基于之前的项目代码来编写 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页index页文章页面 现在我们修改一个文章列表是从数据库中获取数据, 下面我们就需 ...

  2. Python Django CMDB项目实战之-3创建form表单,并在前端页面上展示

    基于之前的项目代码 Python Django CMDB项目实战之-1如何开启一个Django-并设置base页.index页.文章页面 Python Django CMDB项目实战之-2创建APP. ...

  3. web前端全栈学习之路

    web前端全栈学习之路 --- 陆续更新中 一.HTML相关 1.HTML常用标签:http://www.cnblogs.com/wyb666/p/8733699.html 2.HTML5基础: 3. ...

  4. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  5. 你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦

    你的Node应用,对接分布式链路跟踪系统了吗?(一) 原创: 金炳 Node全栈进阶 4天前 戳蓝字「Node全栈进阶」关注我们哦

  6. C#.Net全栈工程师之路-学习路径

    C#.Net全栈工程师之路-学习路径 按架构分: C/S架构: B/S架构: Mobile移动开发: 按技术点分: C#编程基础以及OOP面向对象编程: 数据库基础以及高级应用(MYSQL+MSSQL ...

  7. 战争热诚的python全栈开发之路

    从学习python开始,一直是自己摸索,但是时间不等人啊,所以自己为了节省时间,决定报个班系统学习,下面整理的文章都是自己学习后,认为重要的需要弄懂的知识点,做出链接,一方面是为了自己找的话方便,一方 ...

  8. Python全栈开发之路 【第四篇】:Python基础之函数

    本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...

  9. Python全栈开发之路 【第一篇】:Python 介绍

    本节内容 一.Python介绍 python的创始人为荷兰人——吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  10. Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)

    本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...

随机推荐

  1. SQL无法解决 equal to 运算中 "Chinese_PRC_CI_AS" 和 "SQL_Latin1_General_CP1_CI_AS" 之间的排序规则冲突

    在所在的SQL语句后面加上 COLLATE [排序规则]或者ALTER DATABASE [DBName] COLLATE Chinese_PRC_CI_AS

  2. 《MySQL是怎样运行的》第八章小结

  3. 如何使用webgl(three.js)实现3D消防、3D建筑消防大楼、消防数字孪生、消防可视化解决方案——第十八课(一)

    序: 又是很久没出随笔文章了,一篇文章有时候整理一天,实在是抽不出来时间. 最近在回顾几年前的项目时,发现这个智慧三维消防可视化项目很有回顾价值,索性就拿出来讲讲. 首先,我们要知道消防里的知识,不是 ...

  4. MySQL学习(五)事务

    参考博客:https://www.cnblogs.com/kismetv/p/10331633.html 0.提交和回滚 注:mysql默认自动开启了事务. -- 手动开启事务 start trans ...

  5. 自己动手从零写桌面操作系统GrapeOS系列教程——15.用汇编向屏幕输出字符

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 在上一讲中我们介绍了屏幕显示的原理,本讲我们来实战一下. 一.向屏幕输出一个字符mbr4.asm mbr4.asm中的代码如下: ;将屏幕第一行 ...

  6. find和filter有什么区别

    JavaScript 在 ES6 上有很多数组方法,每种方法都有独特的用途和好处. 在开发应用程序时,大多使用数组方法来获取特定的值列表并获取单个或多个匹配项. 在列出这两种方法的区别之前,我们先来一 ...

  7. 云原生K8S精选的分布式可靠的键值存储etcd原理和实践

    @ 目录 概述 定义 应用场景 特性 为何使用etcd 术语 架构 原理 读操作 写操作 日志复制 部署 单示例快速部署 多实例集群部署 静态 etcd 动态发现 常见命令 概述 定义 etcd 官网 ...

  8. kubernetes(k8s)安装命令行自动补全功能

    Ubuntu下安装命令 root@master1:~# apt install -y bash-completion Reading package lists... Done Building de ...

  9. python模拟鼠标键盘操作

    前言 1 懒人,工作中可以模拟真人操作,不用自己点击 2游戏人员  这是做模拟外挂的必备知识,不管手机还是电脑游戏,尤其副本 准备模块 代码如下: 实现了一个最简单的输入密码,enter进入的登录过程 ...

  10. 微信Token验证代码的实现

    微信开放第三方API接口, 申请地址: https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/inter ...