使用Django和Tastypie返回随机项

时间:2012-06-06 19:59:38

标签: django random tastypie

在直接的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来实现我的目标?还有其他解决方案吗?感谢。

1 个答案:

答案 0 :(得分:4)

在#tastypie上提供答案。

按如下方式设置模型的查询集:

class MyModelResource(ModelResource): class Meta: queryset = MyModel.objects.all().order_by('?')

此处的关键是使用objects.all().order_by而不只是objects.order_by