我正在构建一个从查询集中返回随机对象的 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]
