在 DRF(Django Rest Framework)的 Serializer 中,以 get_
结尾的办法是 Serializer Method Field 的办法名前缀,用于自定义该字段的值。
例如,如果你有一个 Serializer,外面有一个 CharField
字段,你能够通过定义一个以 get_
结尾的办法来自定义该字段的值。示例如下:
from rest_framework import serializers
class MySerializer(serializers.Serializer):
name = serializers.CharField()
def get_name(self, obj):
return obj['name'].strip()
在下面的例子中,get_name
办法承受一个 obj
参数,用于从传递的数据中获取该字段的值,并在返回之前执行 .strip()
办法。
你能够在 get_
办法中接管传递给 Serializer 的数据,并通过该办法自定义字段的值,例如从其余字段中计算、格式化等。
要将参数传递到 Serializer Method Field 办法中,能够通过定义 Serializer Field 时的 source
参数进行传递。例如:
from rest_framework import serializers
class MySerializer(serializers.Serializer):
name = serializers.CharField(source='first_name')
def get_name(self, obj):
return obj['first_name'].strip()
在下面的例子中,name
字段的值从 first_name
字段中获取,并在 get_name
办法中进行了解决。
参考: DRF doc: SerializerMethodField