本文参考: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。