序列化器被多次调用Django Python

时间:2019-03-06 12:48:13

标签: python django serialization django-rest-framework

这是序列化器的代码,可以正常工作。 但是,serializer被多次调用

class StatisticLocationSerializer(serializers.one, two):
      domains = serializers.SerializerMethodField(read_only=True)
      statistic = serializers.SerializerMethodField(read_only=True)
      patents = serializers.SerializerMethodField(read_only=True)
      inventors = serializers.SerializerMethodField(read_only=True)

#### METHOD FIELDS ####
      def setup_eager_loading(queryset):
            return something


class Meta:
    model = models.LocationModel
    fields = ( 'domains', 'statistic',
              'patents')
    lookup_field = 'slug'
    extra_kwargs = {
        'url': {'lookup_field': 'slug'}
    }

##### THIS IS HOW I"M CALLING SERIALIZER CLASS ####
serializer_class = StatisticLocationSerializer
def get_queryset(self):
    queryset = self.get_serializer_class().setup_eager_loading(queryset)

注意:我检查了一下功能,get_queryset也仅被调用一次

1 个答案:

答案 0 :(得分:0)

您是否通过 DRF 用户界面向端点发送请求?我遇到了同样的问题,函数被调用了两次或三次(init 函数)而没有任何解释。

但是,如果您通过 Postman 之类的服务向端点发送请求,这些函数将被调用一次。所以,这似乎是DRF自身接口的问题,而不是代码本身的问题。

对于现实世界的使用,您的代码应该没问题。