2

在直接的 Django 中,您可以通过以下方式访问随机模型实例:

randinst = MyModel.objects.order_by('?')

注意:虽然这存在性能问题,但我已经使用 sqlite 后端进行了测试,并且我确实得到了多达 100000 次尝试的非常随机的结果。由于我的应用程序不需要除此之外的显着性能,因此我不关心其他后端。

我希望完成的是:客户端发出一个请求,/api/v1/mymodel/?limit=10然后从 MyModel 通过tastepie 获取一组随机的十行,就像您运行上面的代码片段 10 次一样。然后它发出相同的请求,并接收 10 个不同的(在概率范围内)随机行。

注意:我尝试过请求/api/v1/mymodel/?ordering='?'及其所有合理的变体均无济于事。设置也无济于事MyModelResource.Meta.ordering = ['?']

有什么办法可以用美味派来实现我的目标吗?还有其他解决方案可以尝试吗?谢谢。

4

1 回答 1

5

回答由#tastypie 提供。

设置模型的查询集如下:

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

objects.all().order_by这里的关键是不仅要使用objects.order_by.

于 2012-06-06T20:20:40.907 回答