首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tastypie:包括相关模型的计算字段?

Tastypie:包括相关模型的计算字段?
EN

Stack Overflow用户
提问于 2012-12-27 02:03:08
回答 1查看 775关注 0票数 1

我查阅了Tastypie的文档并搜索了一段时间,但似乎找不到答案。

假设我们有两个模型:StudentAssignment,它们之间有一对多的关系。Assignment模型包括一个assignment_date字段。基本上,我想使用Tastypie构建一个API,它返回按最近的赋值日期排序的对象。无论排序是在服务器上完成还是在客户端完成,都无关紧要--但是无论在哪里进行排序,都需要assignment_date进行排序。

想法1:和学生一起把作业交回来。

代码语言:javascript
运行
复制
class StudentResource(ModelResource):
    assignments = fields.OneToManyField(
        AssignmentResource, 'assignments', full=True)

    class Meta:
        queryset = models.Student.objects.all()
        resource_name = 'student'

不幸的是,每个学生可能有几十个或数百个作业,所以这是臃肿和不必要的。

想法2:在脱水循环中增加数据。

代码语言:javascript
运行
复制
class StudentResource(ModelResource):    
    class Meta:
        queryset = models.Student.objects.all()
        resource_name = 'student'

    def dehydrate(self, bundle):
        bundle.data['last_assignment_date'] = (models.Assignment
            .filter(student=bundle.data['id'])
            .order_by('assignment_date')[0].assignment_date)

这并不理想,因为它将为每个学生记录执行单独的数据库往返。它也不是非常声明性的,也不是优雅的。

那么,用Tastypie来获得这种功能有什么好方法呢?还是有更好的方法来完成我想要达到的目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-27 16:43:48

您可以根据字段名对ModelResource进行排序。查看文档http://django-tastypie.readthedocs.org/en/latest/resources.html#ordering的这一部分

您还可以在Model:https://docs.djangoproject.com/en/dev/ref/models/options/#ordering中默认设置此顺序

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14048531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档