http://192.168.56.100:8888/workorder/flowconf/
http://192.168.56.100:8888/workorder/flowconf/1/
1. 表设计
from django.db import models # Create your models here. class FlowConf(models.Model): name = models.CharField('工作流名称', max_length=50) customfield = models.TextField(verbose_name='自定义字段') description = models.TextField(verbose_name='描述') def __str__(self): return self.name class Meta: db_table='tb_flowconf' class ApproveConf(models.Model): approve_type_chice= ( ('1', "指定人员审批"), ('2', "角色组审批"), ) flowconf=models.ForeignKey(FlowConf,on_delete=models.CASCADE) sequence = models.CharField(max_length=64,verbose_name='自批序号') approve_type_id= models.CharField(choices=approve_type_chice, default='1',max_length=16) approve_id = models.CharField(max_length=32,verbose_name='审批ID') def __str__(self): return self.sequence class Meta: db_table='tb_approveactionconf'
2. 视图
from django.shortcuts import render # Create your views here. from rest_framework import viewsets from workflow.serializers import * from workflow.models import * from rest_framework.pagination import PageNumberPagination from django_filters.rest_framework import DjangoFilterBackend from rest_framework.filters import OrderingFilter # 分页(局部):自定义分页器 局部 class PageNum(PageNumberPagination): # 查询字符串中代表每页返回数据数量的参数名, 默认值: None page_size_query_param = 'page_size' class FlowConfViewSet(viewsets.ModelViewSet): queryset =FlowConf.objects.all() serializer_class =FlowConfSerializers filter_backends = (DjangoFilterBackend, OrderingFilter) filter_fields = ('name',) # 3.分页:自定义分页器 覆盖全局配置 pagination_class = PageNum #不同形式发访问返回不同的序列化 def get_serializer_class(self): if self.action=='list': return FlowConfSerializers else: return FlowConfDeepSerializer class ApproveConfViewSet(viewsets.ModelViewSet): queryset = ApproveConf.objects.all() serializer_class = ApproveConfSerializers
3序列化
from rest_framework import serializers from workflow.models import * from user.models import User,Role #工单模板 class FlowConfSerializers(serializers.ModelSerializer): class Meta: model=FlowConf fields="__all__" #审批流 class ApproveConfSerializers(serializers.ModelSerializer): # 自定义字段 approve_user=serializers.SerializerMethodField(required=False) class Meta: model=ApproveConf fields="__all__" def get_approve_user(self,row): print(row,'444444444444',type(row)) approve_type_id=row.approve_type_id #审批类型id approve_id=row.approve_id #审批用户id或者角色id if approve_id=='1': '用户审批' approve=User.objects.get(id=approve_id) return { 'approve':approve.username, 'approve_type':'指定人员' } elif approve_id=='2': '角色审批' approve=Role.objects.get(id=approve_id) return { 'approve':approve.name, 'approve_type':'角色审批' } else: '其它审批类型待补充' #继承工单模板序列化 class FlowConfDeepSerializer(FlowConfSerializers): approveconf_set=ApproveConfSerializers(many=True)