乐趣区

关于python:drf-serializer-前缀-get-是什么-如何传递参数

在 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

退出移动版