首页 > 解决方案 > 使用带有搜索过滤器的 Django 和 Google App Engine 的 Google Cloud Storage 签名 URL

问题描述

我有以下带有相关字段的模型和一个所有模型字段都正确返回的 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

我需要添加一个动态字段“签名的 url”,以便在请求时为特定授权用户提供访问权限以及实际的谷歌存储 url。

我怎样才能做到这一点?

标签: djangogoogle-cloud-platformdjango-rest-frameworkgoogle-cloud-storagegoogle-app-engine-python

解决方案


我认为正确的答案是下面使用 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')

推荐阅读