在直接的 Django 中,您可以通过以下方式访问随机模型实例:
randinst = MyModel.objects.order_by('?')
注意:虽然这存在性能问题,但我已经使用 sqlite 后端进行了测试,并且在最多 100000 次尝试中确实得到了真正随机的结果。由于我的应用程序不需要超出此范围的显着性能,因此我不关心其他后端。
我希望完成的是:客户端发出请求,/api/v1/mymodel/?limit=10
,并通过 tastypie 从 MyModel 获取一组随机的十行,就像您将运行上面的代码片段 10 次。然后,它发出相同的请求,并接收 10 个不同的(在概率范围内)随机行。
注意:我已尝试请求 /api/v1/mymodel/?ordering='?'
及其所有合理变体均无济于事。设置 MyModelResource.Meta.ordering = ['?']
有什么办法可以用 Tastypie 来实现我的目标吗?还有其他解决方案可以尝试吗?谢谢。
最佳答案
在#tastypie 上礼貌地回答。
设置模型的查询集如下:
class MyModelResource(ModelResource):
class Meta:
queryset = MyModel.objects.all().order_by('?')
这里的关键是使用objects.all().order_by
而不仅仅是objects.order_by
。
关于django - 使用 Django 和 Tastypie 返回随机项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921284/