首页 > 解决方案 > DRF: Do DRF serializers, SerializerMethodField 有执行顺序

问题描述

class ProfileAPI(serializers.Serializer):
    name = serializers.SerializerMethodField()
    age = serializers.SerializerMethodField()

    def get_name(self, obj):
        return "name"

    def age(self,obj):
        return 78

执行 SerilaizerMethodField 时是否有排序或者它是随机的,这意味着“get_name”将在“get_age”之前执行。

标签: djangodjango-rest-frameworkdjango-serializer

解决方案


执行顺序按照 meta 中字段的顺序。

class ProfileAPI(serializers.Serializer):
    name = serializers.SerializerMethodField()
    age = serializers.SerializerMethodField()

    def get_name(self, obj):
        return "name"

    def age(self,obj):
        return 78

    class Meta:
        fields = ["name", "age"]

在上述情况下,首先调用“get_name”,然后调用“get_age”。


将顺序更改为

class Meta:
     fields = ["age", "name"]

将首先执行 get_age。


推荐阅读