这是序列化器的代码,可以正常工作。 但是,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也仅被调用一次
答案 0 :(得分:0)
您是否通过 DRF 用户界面向端点发送请求?我遇到了同样的问题,函数被调用了两次或三次(init 函数)而没有任何解释。
但是,如果您通过 Postman 之类的服务向端点发送请求,这些函数将被调用一次。所以,这似乎是DRF自身接口的问题,而不是代码本身的问题。
对于现实世界的使用,您的代码应该没问题。