簡體   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