使用 Django 和 Tastypie 返回随机项目

jus*_*ane 2 random django tastypie

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

randinst = MyModel.objects.order_by('?')
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

jus*_*ane 5

回答礼貌#tastypie。

设置模型的查询集如下:

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

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