更新时间:2023-01-16 09:15:20
您可以使用 serializers.SerializerMethodField
:
这是模型 Park,它有 name 和alternate_name 字段.
Here is the model Park, which has name and alternate_name fields.
class Park(models.Model):
name = models.CharField(max_length=256)
alternate_name = models.CharField(max_length=256, blank=True)
objects = models.GeoManager()
class Meta:
db_table = u'p_park'
def __unicode__(self):
return '%s' % self.name
这是 Park 模型的序列化器,ParkSerializer.这会将alternate_name 的名称更改为location.
Here is Serializer for Park Model, ParkSerializer. This changes the name of alternate_name to location.
class ParkSerializer(serializers.ModelSerializer):
location = serializers.SerializerMethodField('get_alternate_name')
class Meta:
model = Park
fields = ('other_fields', 'location')
def get_alternate_name(self, obj):
return obj.alternate_name
此外,您可以将 serializers.CharField
与 source
属性一起使用:
Additionally, you can use serializers.CharField
with source
attribute:
class ParkSerializer(serializers.ModelSerializer):
location = serializers.CharField(source='other_fields')
class Meta:
model = Park
fields = ('other_fields', 'location')
Django 用于遍历外键的 __
符号也有效:
Django's __
notation to traverse foreign key also works:
location = serializers.CharField(source='OtherModel__other_fields')
如果您想更改 API 上的返回类型,同样的原则适用,因此您也可以使用 serializers.DecimalField(source=...)
和其他字段类型.
The same principle applies if you want to change the return type on the API, so you can do serializers.DecimalField(source=...)
and other field types as well.
然而,这仅适用于只读字段.
This would however work only for read only fields.