Django枚举字段如何序列化

本文参考:https://blog.csdn.net/lzw2016/article/details/81546311
有需要请阅读其原文介绍choice的使用,和在模板中的使用。

今天在开发中遇到将枚举字段序列化,终于找到答案。

例如:
在django中设置模型如下的枚举字段

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    LEVEL = (
        (1, "company"),
        (2, "organization"),
        (3, "group"),
        (4, "common")
    )
    level = models.SmallIntegerField(choices=LEVEL, default=4, verbose_name="账号类型")

序列化的时候,默认是拿到相应的key,也就是假如level是company时字段结果是level: 1
如何序列化拿到level:company这样的呢?当然是有办法的
定义序列化器

from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
	level = serializers.ChoiceField(choices=User.LEVEL, source="get_level_display", read_only=True)  # 设置source="get_属性_display"即可

User.level = value
User.get_level_display()=display_name
通过属性取value,通过 get_属性_display()方法取display_name。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值