zoukankan      html  css  js  c++  java
  • django choices 字段处理返回枚举值

    1.代码model设计

    class RoleInfo(models.Model):
        choices=[('0','普通角色'),('1',"管理员")]
        status_enum= [('0','禁用'),('1',"启用")]
    
        role_name = models.CharField(max_length=50)
        role_type = models.CharField(choices=choices,max_length=10)
        status = models.CharField(choices=status_enum,max_length=10)
        create_time = models.DateTimeField(auto_now_add=True)
        update_time = models.DateTimeField(auto_now=True)
        class  Meta:
            db_table = "tbl_role_info"
            ordering = ["-create_time"]
    

      

    2.serializer 设计:

    class RoleSerializer(serializers.ModelSerializer):
    
        role_type_value = serializers.SerializerMethodField()
        status_value = serializers.SerializerMethodField()
    
        def get_role_type_value(self,obj):
            return obj.get_role_type_display()
        def get_status_value(self,obj):
            return obj.get_status_display()
    
        class Meta:
            model = models.RoleInfo
            fields= ['id','role_name','role_type','role_type_value',
                     'status','status_value','create_time','update_time']
    

      

    返回数据:

    {
      "next": null,
      "previous": null,
      "data": [
        {
          "id": 1,
          "role_name": "testrole",
          "role_type": "0",
          "role_type_value": "普通角色",
          "status": "0",
          "status_value": "禁用",
          "create_time": "2021-08-02 19:24:27",
          "update_time": "2021-08-02 19:24:27"
        }
      ],
      "page_size": 10,
      "page": 1,
      "totals": 1,
      "msg": "ok",
      "code": 200,
      "success": true
    }

    方式二:

    class RoleSerializer(serializers.ModelSerializer):
    
        role_type_value = serializers.CharField(source="get_role_type_display",max_length=10,read_only=True)
        status_value = serializers.CharField(source="get_status_display",max_length=10,read_only=True)
    
        class Meta:
            model = models.RoleInfo
            fields= ['id','role_name','role_type','role_type_value',
                     'status','status_value','create_time','update_time']
    

      

    返回也可以达到一样的预期结果

  • 相关阅读:
    [转]Linux FTP服务配置
    [转]手把手教你nginx下如何增加网站
    [转]linux一键安装web环境全攻略
    CentOS命令
    [转]Response对象的属性和方法
    beforeRouteLeave vue监听返回的使用方法
    ue项目浏览器出现卡顿及崩溃的原因查找与解决方案
    vue中,解决chrome下,的warning, Added nonpassive event listener to a scrollblocking ‘mousewheel‘ event 问题
    npm
    Java线程池使用案例
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/15091365.html
Copyright © 2011-2022 走看看