繁体   English   中英

使用 django-datatables-view 对自定义列进行排序

[英]Sorting custom columns with django-datatables-view

Using Django 3, python 3.6, django-datatable-view 1.19.1 Trying to do a datatable with columns from my model and computed before output ones. 我绘制了我需要的所有值,但在尝试对自定义列进行排序后出现错误:

Cannot resolve keyword 'XXXX' into field. Choices are: ...

我找到了一种将列注册为虚拟列的方法,没有数据库源,但它在 django-datatable-view 0.5.4 文档中,但这些方法不再起作用。 在最新版本的文档链接中,我需要的信息不可用。

请帮我弄清楚,如何处理来自模型字段的自定义计算列(排序,渲染)

现在这有点棘手。

要定义计算域:

class ListJson(BaseDatatableView):

columns = ["id", "status_code", "computed_field"]
order_columns = ["id", "status_code"]

# Override render_column method
def render_column(self, row, column):
    if column == "computed_field":
        return row.computed_field()
    else:
        return super(ListJson, self).render_column(row, column)

这允许您返回 computed_field 方法 value()。

当我们要对计算字段进行排序时,情况就变得复杂了。 在这种情况下,最好在 JavaScript 中禁用 serverSide 操作

$.extend($.fn.dataTable.defaults, {
    serverSide: false,
});

但是,您必须立即返回所有行,这可能会杀死服务器。

如果要在后端进行排序,则需要安排并返回带有虚拟字段的相应查询集。

class ListJson(BaseDatatableView):
      def get_initial_queryset(self):
            return qs

只需像这样构建您的查询

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM