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

【Schedule轮班排班】09.增加双人值班,后面值班迁移功能

admin2020年4月29日 21:38 Django 1591人已围观

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

应业务需要,增加双人值班功能,及页面点击双人值班后,自动更新后面的值班 页面如下 ```html <td class="text-center"> {% if schedule.staff and schedule.date >= today %} <a class="btn btn-primary btn-xs" title="推迟一次值班,会自动覆盖后面的变动" href="{% url 'duty:delay_once' %}?delay_date={{ schedule.date|date:'Y-m-d' }}">推迟</a> <a class="btn btn-info btn-xs" title="双人值班,自动提取下次值班人员,后面值班依次往前提" href="{% url 'duty:change_double' %}?delay_date={{ schedule.date|date:'Y-m-d' }}">双人值班</a> {% endif %} </td> ``` ![BLOG_20200429_214059_74](/media/blog/images/2020/04/BLOG_20200429_214059_74.png "博客图集BLOG_20200429_214059_74.png") 添加一个url ```python path('schedule/change/double/', ChangeDoubleDuty.as_view(), name='change_double'), # 修改为双人值班 ``` 视图实现 ```python # 修改为双人值班 @method_decorator(simple_permission_required(permission='it_sys_user'), name='dispatch') class ChangeDoubleDuty(View): def get(self, request): try: delay_date_str = request.GET.get('delay_date') yy, mm, dd = delay_date_str.split('-') # 获取到选中的日期 choose_date = datetime.date(int(yy), int(mm), int(dd)) # 获取值班数据 this_schedule_data = Schedule.objects.get(date=choose_date) # 当天值班人员和当天值班类型 staff = this_schedule_data.staff duty_type = this_schedule_data.duty_type # 获取该值班类型的下一次值班数据 # print(Schedule.objects.filter(date__gte=choose_date, duty_type=duty_type, staff__isnull=False)) # 所选日期 下次值班 next_schedule_data = Schedule.objects.filter(date__gt=choose_date, duty_type=duty_type, staff__isnull=False).order_by('date').first() # print(next_schedule_data) # 修改这一天的实际值班人员信息 this_schedule_data.real_staff = '{}、{}'.format(this_schedule_data.staff, next_schedule_data.staff) this_schedule_data.save() # 调用排班函数前先保存值 last_duty_name = next_schedule_data.staff duty_type = duty_type start_date = next_schedule_data.date end_date = Schedule.objects.order_by('-date').first().date # 排班结束日期 # 调用更新数据 generate_duty_data(last_duty_name=last_duty_name, duty_type=duty_type, start_date=start_date, end_date=end_date) except Exception as e: print('修改双人值班发生异常:', e) return redirect(reverse('duty:schedule')) ``` 点击双人值班效果 ![BLOG_20200429_214224_95](/media/blog/images/2020/04/BLOG_20200429_214224_95.png "博客图集BLOG_20200429_214224_95.png")

很赞哦! (0)

文章交流

  • emoji
0人参与,0条评论

当前用户

未登录,点击   登录

站点信息

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