Django rest framework DRF-从序列化程序返回自定义值

Django rest framework DRF-从序列化程序返回自定义值,django-rest-framework,Django Rest Framework,我有一个状态字符模型字段,可以存储(“Y”、“N”、“I”) 我已经编写了ModelSerializer,如下所示 class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ('status') 现在,我想返回Yes或No或Intermediate的status,而不是Y或N或I 你是怎么做到的?我应该在文档中查找什么?您可以重写序列化程序

我有一个
状态
字符模型字段,可以存储(“Y”、“N”、“I”)

我已经编写了
ModelSerializer
,如下所示

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ('status')  
现在,我想返回
Yes
No
Intermediate
status
,而不是
Y
N
I


你是怎么做到的?我应该在文档中查找什么?

您可以重写序列化程序的
to_representation()
方法,并调用
get_field_display()

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('status', )

    def to_representation(self, instance):
        representation = super(UserSerializer, self).to_representation(instance)
        representation['status'] = instance.get_status_display()
        return representation

您可以重写序列化程序的
to_representation()
方法,并调用
get_field_display()

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('status', )

    def to_representation(self, instance):
        representation = super(UserSerializer, self).to_representation(instance)
        representation['status'] = instance.get_status_display()
        return representation

问题是,我的模型是使用inpectdb创建的,所以它们在模型中没有选择。py@KishorPawar因此,最简单的解决方案是:您可以检查
to_representation()
中的一个条件,并随时显示,比如
status=''if instance.status='I':status='Intermediate'elif status='Y':status='Yes'。。。表示['status']=状态
。但最好在一个模型方法中编写这个条件,并在serializer Onceys中调用它,这就是我想做的,但我想看看是否有更干净的方法。虽然我正在尝试向模型字段添加选项。@KishorPawar还有一个关于
inspectdb
的问题,对不起,我从未使用过它。你最好问一个关于这个特定问题的新问题my
to_representation
没有被调用。问题是,我的模型是使用InputDB创建的,所以它们在模型中没有选择。py@KishorPawar因此,最简单的解决方案是:您可以检查
to_representation()
中的条件,并随时显示,如
status=''if instance.status='I':status='Intermediate'elif status='Y':status='Yes'。。。表示['status']=状态
。但最好在一个模型方法中编写这个条件,并在serializer Onceys中调用它,这就是我想做的,但我想看看是否有更干净的方法。虽然我正在尝试向模型字段添加选项。@KishorPawar还有一个关于
inspectdb
的问题,对不起,我从未使用过它。你最好问一个关于这个特定问题的新问题。我的
to_表示法
没有被调用。