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 = ['?']
有什么办法可以用美味派来实现我的目标吗?还有其他解决方案可以尝试吗?谢谢。
回答礼貌#tastypie。
设置模型的查询集如下:
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all().order_by('?')
这里的关键是使用objects.all().order_by不只是objects.order_by。