Python 是否包含来自相关模型的计算字段?
我查阅了Tastypie的文档并搜索了一段时间,但似乎找不到答案 假设我们有两个模型:Python 是否包含来自相关模型的计算字段?,python,django,tastypie,Python,Django,Tastypie,我查阅了Tastypie的文档并搜索了一段时间,但似乎找不到答案 假设我们有两个模型:学生和作业,它们之间有一对多的关系。Assignment模型包含一个Assignment\u date字段。基本上,我想使用tastype构建一个API,它返回按最近的作业日期排序的Studentobjects。排序是在服务器端还是在客户端进行并不重要,但无论在哪里进行排序,都需要使用assignment\u date进行排序 想法#1:把作业和学生一起交回就行了 class StudentResource(M
学生
和作业
,它们之间有一对多的关系。Assignment
模型包含一个Assignment\u date
字段。基本上,我想使用tastype构建一个API,它返回按最近的作业日期排序的Student
objects。排序是在服务器端还是在客户端进行并不重要,但无论在哪里进行排序,都需要使用assignment\u date
进行排序
想法#1:把作业和学生一起交回就行了
class StudentResource(ModelResource):
assignments = fields.OneToManyField(
AssignmentResource, 'assignments', full=True)
class Meta:
queryset = models.Student.objects.all()
resource_name = 'student'
不幸的是,每个学生可能有几十个或数百个作业,因此这是臃肿和不必要的
想法2:在脱水循环期间增加数据
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获得这种功能呢?或者有没有更好的方法来实现我想要实现的目标?您可以按字段名对ModelResource进行排序。查看文档的这一部分
您还可以在模型中默认设置此顺序:您可以根据字段名对模型资源进行排序。查看文档的这一部分 您也可以在模型中默认设置此顺序: