[英]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.