【问题标题】:Aggregation with django-eztables使用 django-eztables 进行聚合
【发布时间】:2014-03-18 13:47:42
【问题描述】:

我正在使用django-eztables 对数据表进行服务器端处理。到目前为止它工作正常,但现在我正在尝试向我的表中添加一个字段,其中包含通过特定外键与对象关联的对象总数。使用 fnRender 很容易让它在客户端正确显示,但由于排序是在服务器端完成的,我需要在服务器端实际进行聚合。事实证明这很困难。

我似乎找不到在服务器端处理此问题的方法。 fields 对象中的条目似乎只接受实际的模型字段,而且我看不到任何方法可以插入我的谷歌发现建议的注释。我已经查看了defining a custom sort,但由于我只是在构建一个字符串,这似乎并没有帮助。

理想情况下,我想找到一种在字段字典中使用外键关系聚合的方法,例如:

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...
}

如果这是不可能的,或者不可行,只是让它基于聚合进行排序就可以了,因为我可以从客户端更改表中显示的数据,我不需要这样做任何过滤。

【问题讨论】:

    标签: python django datatables


    【解决方案1】:

    我最终意识到我可以在覆盖 get_queryset 时放入注释,如下所示:

    def get_queryset(self):
        qs = super(SomeObjectDataTableView, self).get_queryset()
        return qs.select_related().annotate(items_count=Count('items'))
    

    或许早该想通了……

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 2020-12-25
      • 1970-01-01
      • 2013-11-19
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多