您现在的位置是: 网站首页 >Django >Django轮班排班管理系统 Django

【Schedule轮班排班】01.环境搭建,设计数据库

admin2018年11月28日 13:13 Django | Html | JavaScript | Python 1912人已围观

Django轮班排班管理系统简介 基于内部业务需求,某些岗位需要进行工作日值班以及周六值班, 如果每次手动去制作Excel排班表,确实比较费时间,就考虑自动化生成的方式去做。 没有什么技术含量,可以了解下循环生成数据方法。我也没找到相关的代码参考,个人写的很烂,仅供参考。 环境要求:Django2.x.x

# 项目描述 该项目设计比较简单,只是用于生成值班表。按照业务需求,每个工作日需要安排一个值班,且每个周六需要值班,由于周六有调休,所以相当于有三种情况考虑:工作日、周六、不值班。 下面介绍的是Django的一个app,不是整个项目,使用的时候直接将该app配置到项目中运行即可。 # 创建Django项目 这个和平时创建方法相同,就不再赘述了,然后在项目下创建app ```python manage.py startapp schedule ``` 修改项目的主urls.py,增加该app的url ```python urlpatterns = [ path('duty/', include('app_duty.schedule.urls', namespace='duty')), # 值班安排 ] ``` 目录结构如下: ![BLOG_20181128_131955_85](/media/blog/images/2018/11/BLOG_20181128_131955_85.png "博客图集BLOG_20181128_131955_85.png") # 设计models ## 值班成员表 ```python from django.db import models # 以下是值班表 class Employee(models.Model): name = models.CharField(max_length=10, db_index=True, verbose_name='姓名') num = models.DecimalField(max_digits=5, unique=True, decimal_places=0, verbose_name='序号') available = models.BooleanField(default=False, verbose_name='是否排班') class Meta: verbose_name = '值班成员' verbose_name_plural = '值班成员' ordering = ['num'] def __str__(self): return self.name ``` ## 法定日期表 该表记录国家法定休息日·工作日,也可以根据内部的假期添加到表内 ```python # 法定工作日,或法定休息日 class LegalDay(models.Model): Legal_Type = ( (0, '法定休息日'), (1, '法定工作日') ) date = models.DateField(unique=True, verbose_name='日期') legal_type = models.IntegerField(choices=Legal_Type, default=0, verbose_name='法定选择') class Meta: verbose_name = '法定日期' verbose_name_plural = '法定日期' ordering = ['-date'] def __str__(self): return '{}({})'.format(self.date, self.get_legal_type_display()) ``` ## 值班表 ```python class Schedule(models.Model): Duty_Type = ( (0, '不用值班'), (1, '晚上值班'), (2, '周末值班'), ) date = models.DateField(unique=True, verbose_name='日期') is_workday = models.BooleanField(default=False, verbose_name='是否工作日') duty_type = models.IntegerField(choices=Duty_Type, default=0, verbose_name='值班类型') staff = models.CharField(max_length=10, null=True, blank=True, verbose_name='值班人员') real_staff = models.CharField(max_length=10, null=True, blank=True, verbose_name='实际值班人员') class Meta: verbose_name = '值班安排' verbose_name_plural = '值班安排' ordering = ['-date'] # 日期倒序,新的在前 def __str__(self): return '{}({})'.format(self.date, self.staff) ``` 到此模型设计完成,看起来都很简单。

很赞哦! (6)

文章交流

  • emoji
0人参与,0条评论

当前用户

未登录,点击   登录

站点信息

  • 建站时间:网站已运行2076天
  • 系统信息:Linux
  • 后台程序:Python: 3.8.10
  • 网站框架:Django: 3.2.6
  • 文章统计:256 篇
  • 文章评论:60 条
  • 腾讯分析网站概况-腾讯分析
  • 百度统计网站概况-百度统计
  • 公众号:微信扫描二维码,关注我们
  • QQ群:QQ加群,下载网站的学习源码
返回
顶部
标题 换行 登录
网站