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. Linux值得收藏的40个命令总结,常用的正则表达式

    1 删除0字节文件 find -type f -size 0 -exec rm -rf {} \; 2 查看进程 按内存从大到小排列 PS -e -o "%C : %p : %z : %a& ...

  2. python爬虫基础教程

    爬虫介绍 爬虫就是程序,是从互联网中,各个网站上爬取数据(能浏览到的网页才可以爬),做数据清洗,入库 爬虫本质: 模拟http请求,获取数据,入库 网站/app > 抓包 我们日常使用的baid ...

  3. 剑指 offer 第 3 天

    第 3 天 字符串(简单) 剑指 Offer 05. 替换空格 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are h ...

  4. Feeder 一款 Mac 上的 RSS 阅读器,更优雅地跟踪最新的新闻和博客文章

    Feeder 是一款 Mac 上的 RSS 阅读器,它可以帮助用户轻松地订阅和管理 RSS 源,让用户可以轻松地跟踪最新的新闻和博客文章. 下载: FeederMac ⇲ 详细了解 Feeder 的界 ...

  5. 快收藏!最全GO语言实现设计模式

    https://segmentfault.com/a/1190000042859564

  6. 深入理解 python 虚拟机:令人拍案叫绝的字节码设计

    深入理解 python 虚拟机:令人拍案叫绝的字节码设计 在本篇文章当中主要给大家介绍 cpython 虚拟机对于字节码的设计以及在调试过程当中一个比较重要的字段 co_lnotab 的设计原理! p ...

  7. Redis的自增也能实现滑动窗口限流?

    限流是大家开发之路上一定会遇到的需求.比如:限制一定时间内,接口请求请求频率:一定时间内用户发言.评论次数等等,类似于滑动窗口算法.这里分享一份拿来即用的代码,一起看看如何利用常见的 Redis 实现 ...

  8. w32模块模拟鼠标键盘操作

    win32api.keybd_event 该函数原型:keybd_event(bVk, bScan, dwFlags, dwExtraInfo) 第一个参数:虚拟键码(键盘键码对照表见附录): 第二个 ...

  9. python对图片进行最大边大小缩放

    def split_image_bs4(file, max_len=720): """ 切割图片 :param file: 二进制文件 :param max_len: 最 ...

  10. Java:如何加密或解密PDF文档?

    在工作中,我们会将重要的文档进行加密,并且设置用户的访问权限,其他外部人员均无法打开,只有获取该权限的用户才有资格打开文档.此外,限制用户的使用权限,极大程度上阻止了那些有意要篡改.拷贝其中内容的人, ...