我正在开发一个需要REST API的项目。我试过Piston,但它不符合我的要求,因为它目前每个型号只允许1个处理程序。
Tastypie似乎是一个更好的选择。但是,我遇到了以下问题。我的文章类是根据复杂的规则显示的,例如排名和创建的日期。为了提高服务器性能,我创建了一个虚拟表来记录所有文章的顺序,以便在用户请求时,不会执行复杂的排序过程。相反,服务器会从虚拟表中检查每篇文章的订单。
使用Tastypie,需要一个查询集。但是,因为我想使用虚拟表中记录的订单,所以我必须使用更复杂的代码片段来检索数据。
我是否有可能返回一个文章对象数组,而Tastypie可以将它们转换为适当的JSON格式。
答案 0 :(得分:0)
您需要的是扩展queryset
中的Meta
。假设您的文章表应该按一些其他数据排序,您的查询集将被定义,例如:
Meta:
queryset = Article.objects.extra(select={
'ordering': 'SELECT foo FROM bar'
},).order_by('ordering')
您必须在资源中定义其他字段:
ordering = field.IntegerField(attribute="ordering", default=0, readonly=True)
现在应返回附加字段,其中包含从查询集中检索到的所有其他字段。请注意,如果您在元数据库中定义fields
属性,则还必须在其中添加新字段。