DRF: имеют ли сериализаторы DRF, SerializerMethodField порядок выполнения - PullRequest
2 голосов
/ 30 мая 2020
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».

1 Ответ

2 голосов
/ 30 мая 2020

Порядок выполнения определяется порядком полей в метаданных.

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.

...