Django-drf-序列化器高级用法之SerializerMethodField

在Drf框架中的serializers.py序列化中,

SerializerMethodField字段是一个只读字段。它通过调用附加到的序列化程序类上的方法来获取其值。它可用于将任何类型的数据添加到对象的序列化表示中。

SerializerMethodField(method_name=None)

method_name - 要调用的序列化程序上方法的名称。如果不包含此默认值get_<field_name>。
method_name参数引用的序列化方法应该接受一个参数(除了self),它是被序列化的对象。它应该返回您想要包含在对象的序列化表示中的任何内容。

示例:

  from django.contrib.auth.models import User
  from django.utils.timezone import now
  from rest_framework import serializers
  class UserSerializer(serializers.ModelSerializer):
      days_since_joined = serializers.SerializerMethodField()
      class Meta:
          model = User
          
      def get_days_since_joined(self, obj):
          return (now() - obj.date_joined).days
  ```

注意:

1.SerializerMethodField这个是一个只读字段,也就是read_only=True;

2.在进行序列化时候,要写一个get_<field_name>方法进行。

posted on 2023-01-02 14:55  一先生94  阅读(804)  评论(0编辑  收藏  举报

导航