Django rest framework 定制显示器';django REST的s场
我使用Django REST,我知道是否可以定制json响应中属性的显示 例如: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'] 但要查看
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']
如果您不想丢失数据顺序,可以检查以下问题: