序列化自定义字段

表设计

#审批流
class ApproveConf(models.Model):
    # permission_classers=(IsAu)
    approve_type_chice= (
        ('1', "指定人员审批"),
        ('2', "角色组审批"),
    )
    flowconf=models.ForeignKey(FlowConf,on_delete=models.CASCADE)
    sequence = models.CharField(max_length=64,verbose_name='审批序号')
    approve= 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

 

序列化

class ApproveConfSerializers((serializers.ModelSerializer)):
    flowconf=serializers.CharField(source='flowconf.name',read_only=True)
    #审批类型 自定义查找choices字段方法
    approve_name=serializers.SerializerMethodField(required=False)
    #审批人id或者审批角色id  
    approve_id_id=serializers.SerializerMethodField(required=False)
    class Meta:
        model=ApproveConf
        fields="__all__"

    def get_approve_name(self,row):
        approve_type_chice=dict(row.approve_type_chice)
        return approve_type_chice.get(row.approve)

    def get_approve_id_id(self,row):
        approve=row.approve       #审批类型
        approve_id=row.approve_id #审批人id或者审批角色id
        if approve=='1':
            "指定人审批"
            ss=User.objects.get(id=approve_id)

            return {
                'ss':ss.username,
                'approve':'指定人审批'
            }
        elif approve=='2':
            '角色组审批'
            ss=Role.objects.get(id=approve_id)
            return {
                'ss':ss.zh_name,
                'approve':'角色组审批'
            }

 

展示

 

posted @ 2020-12-03 19:19  小虾米爱吃鱼  阅读(162)  评论(0编辑  收藏  举报