我正在构建一个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返回一个查询集,所以我知道它正在获得结果。但我需要一个(随机)实例。
有人知道我做错了什么吗?
发布于 2018-06-30 23:58:10
它需要一个包含结果的QuerySet。通过使用first()
,您将从结果列表中返回一项。
尝试对查询集进行切片,而不是使用first()
:
random_ad = Ad.objects.filter(verified=False).order_by('?')[:1]
https://stackoverflow.com/questions/51116348
复制相似问题