我有以下具有相关字段的模型和一个API,所有模型字段均正确返回。
class VideoEntityFilterSerializer(serializers.ModelSerializer):
class Meta:
model = Entity
fields = ('uuid', 'description', 'url', 'segment_start', 'segment_end', 'confidence', 'username', 'userid', 'videouuid', 'videotitle')
class VideoEntityList(generics.ListAPIView):
model = Entity
serializer_class = VideoEntityFilterSerializer
queryset = Entity.objects.all()
filter_backends = [filters.SearchFilter]
search_fields = ['videouuid', ]
pagination_class = StandardResultsSetPagination
我需要在“签名的网址”中添加一个动态字段,以便在请求时为特定的授权用户提供访问权限以及实际的Google存储网址。
我该如何实现?
我认为正确的答案是在下面使用SerializerMethodField:
class VideoEntityFilterSerializer(serializers.ModelSerializer):
signed_url = serializers.SerializerMethodField('get_signed_url')
def get_signed_url(self, foo):
return foo.name == "bar"
class Meta:
model = Entity
fields = ('uuid', 'description', 'url', 'segment_start', 'segment_end', 'confidence', 'username', 'userid', 'videouuid', 'videotitle', 'signed_url')