Skip to main content
 首页 » 编程设计

python之Django:试图选择随机结果,但得到的对象没有 len() 错误

2024年08月15日33me-sa

我正在构建一个从查询集中返回随机对象的 Django-Rest API

  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。通过使用 first(),您将从结果列表中返回一个项目。

不使用 first(),尝试对查询集进行切片:

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