Django rest framework 定制显示器';django REST的s场

Django rest framework 定制显示器';django REST的s场,django-rest-framework,Django Rest Framework,我使用Django REST,我知道是否可以定制json响应中属性的显示 例如: class MyModel(models.Model): name = models.CharField(max_length=300) 和我的序列化程序: class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = ['name'] 但要查看

我使用Django REST,我知道是否可以定制json响应中属性的显示

例如:

class MyModel(models.Model):
    name = models.CharField(max_length=300)
和我的序列化程序:

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ['name']
但要查看{'name':'itsvalue'},我将看到{'mycustomedmodelname':'itsvalue'}

你认为有可能吗

非常感谢。

您可以重写序列化程序的方法来更改字段名称:

类MyModelSerializer(serializers.ModelSerializer):
类元:
model=MyModel
字段=['name']
def到_表示(自身、实例):
ret=super().to_表示法(实例)
#ret是OrderedDict,因此这将更改结果的顺序。
ret['custom_name']=ret.pop('name')
回程网
def至_内部_值(自身、数据):
#如果要使用自定义名称写入序列化程序。
data['name']=data.pop('custom_name')
将super()返回到内部值(数据)

一种方法是使用
SerializerMethodField
()

类MyModelSerializer(serializers.ModelSerializer):
my_customed_model_name=序列化程序。SerializerMethodField()
def get_my_自定义_型号_名称(self,obj):
返回obj.name
类元:
model=MyModel

尽管您希望字段名中包含空格,但此解决方案不适用于您。

您可以通过这种方式完成此操作

class MyModelSerializer(serializers.ModelSerializer):
    other_name = serializers.CharField(source='name')
    class Meta:
        model = MyModel
        fields = ['other_name']

如果您不想丢失数据顺序,可以检查以下问题: