使用django-eztables进行聚合
我正在使用 django-eztables 来处理服务器端的数据表。到目前为止,一切都很顺利,但现在我想在我的表格中添加一个字段,这个字段要显示与某个对象通过特定外键关联的对象总数。虽然在客户端使用 fnRender 显示这个数据很简单,但因为排序是在服务器端进行的,所以我需要在服务器端进行聚合计算。这让我遇到了一些困难。
我似乎找不到在服务器端处理这个问题的方法。字段对象中的条目似乎只接受实际的模型字段,而我没有找到办法将我在谷歌上找到的注释加进去。我查看了 自定义排序的定义,但因为我只是构建一个字符串,这似乎并没有什么帮助。
理想情况下,我希望能找到一种方法,在字段字典中直接使用外键关系的聚合,类似于:
fields = {
'id': 'id',
'name': 'name',
'total_items': 'items__count' #Something like this, where Item has a foreign key to the object the datatable is composed of
#More fields...
}
如果这不可能,或者不切实际,只要能让排序基于聚合结果就可以了,因为我可以从客户端更改表格中显示的数据,而且我不需要进行任何过滤。
1 个回答
0
我最后明白了,其实我可以在重写 get_queryset 的时候加上注释,像这样:
def get_queryset(self):
qs = super(SomeObjectDataTableView, self).get_queryset()
return qs.select_related().annotate(items_count=Count('items'))
我可能应该早点想明白这个...