A cleaner alternative to Django Rest Framework's SerializerMethodField

Fix your get_ methods with 5 lines of code.
November 13, 2019
Here's an example of SerializerMethodField from the Django Rest Framework docs:
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
If this get_ stuff hurts your soul like it does to mine, there's simpler way to do this.
First, let's create a new Serializer Field.
class SerializerLambdaField(SerializerMethodField):
 
    def bind(self, field_name, parent):
        super(SerializerMethodField, self).bind(field_name, parent)
 
    def to_representation(self, data):
        return self.method_name(data)
 
Now you can write the previous serializer like this:
class UserSerializer(serializers.ModelSerializer):
    days_since_joined = SerializerLambdaField(lambda obj: (now() - obj.date_joined).days)
 
    class Meta:
        model = User
Enjoy!