在 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


universe_king
3.4k 声望680 粉丝