代码之家  ›  专栏  ›  技术社区  ›  Jasper

django:尝试选择随机结果,但get object没有len()错误

  •  2
  • Jasper  · 技术社区  · 7 年前

    我正在构建一个django rest api,它从queryset返回一个随机对象

      class AdViewSet(viewsets.ReadOnlyModelViewSet):
        serializer_class = AdSerializer
        queryset = Ad.objects.none()
    
        def get_queryset(self):
          if 'verify' in self.request.GET:
              # Return random object
              random_ad = Ad.objects.filter(verified=False).order_by('?').first()
              # return random_ad
              return random_ad
    
          return Ad.objects.all().order_by('-pk')
    

    但此代码返回 object of type 'Ad' has no len() 错误。

    移除 .first() 命令使api返回一个queryset,因此我知道它正在获得结果。但我需要一个(随机的)实例。

    有人知道我做错了什么吗?

    1 回复  |  直到 7 年前
        1
  •  3
  •   davidtgq    7 年前

    它需要一个包含结果的queryset。通过使用 first() ,则返回结果列表中的一项。

    而不是使用 第一() ,尝试切片查询集:

    random_ad = Ad.objects.filter(verified=False).order_by('?')[:1]