在直接的Django中,您可以通过以下方式访问随机模型实例:
randinst = MyModel.objects.order_by('?')
注意:虽然存在这方面的性能问题,但我已经使用sqlite后端进行了测试,并且我确实获得了高达100000次尝试的随机结果。由于我的应用程序不需要超出此范围的重要性能,因此我不关心其他后端。
我希望实现的目标是:客户端发出请求/api/v1/mymodel/?limit=10
,并通过tastypie从MyModel中随机获取10行,就像运行上述代码段10次一样。然后它发出相同的请求,并接收10个不同的(在概率范围内)随机行。
注意:我已尝试请求/api/v1/mymodel/?ordering='?'
及其所有合理的变体无济于事。同样无益的是设置MyModelResource.Meta.ordering = ['?']
有没有办法用tastypie来实现我的目标?还有其他解决方案吗?感谢。
答案 0 :(得分:4)
在#tastypie上提供答案。
按如下方式设置模型的查询集:
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all().order_by('?')
此处的关键是使用objects.all().order_by
而不只是objects.order_by
。