Open matthewhegarty opened 4 years ago
I've reproduced the issue here.
To reproduce:
I am getting the error when search is done. custom functions are not working.
hey @matthewhegarty take a look at #83 . set orderable: false, searchable: false,
This should be documented, as well as other cases where setting orderable: false, searchable: false
is necessary to prevent a server side error. PR anyone ? @matthewhegarty @sandeepbalagopal09
@izimobil why don't you want to use name
as alternative to data
in this case?
$('#player-table').DataTable({
"serverSide": true,
"ajax": {
"url": "{% url "api:player-list" %}?format=datatables",
},
"columns": [
"data": function ( row, type, val, meta ) {
return row.my_val;
},
"name": "my_val"
]
})
Just modify that lines https://github.com/izimobil/django-rest-framework-datatables/blob/fab94a9e3d26bd6e393e341cb84d99a406b27db1/rest_framework_datatables/filters.py#L54-L65 like this
col = 'columns[%d][%s]'
data = get_param(request, col % (i, 'data'))
name = get_param(request, col % (i, 'name'))
if (data == 'function') and name:
data = name
(not a full replacement, just for illustration).
My Javascript defines a function for the
columns.data
attribute:This works fine when displaying the table - the values are rendered correctly. However, when sorting the column, this sends a request which triggers a crash with
FieldError
:Sure enough, the request sends
data=function
, and I thought that this was the source of the issue, but this actually gets sent with successful requests as well.Crashes:
Returns OK:
Stack trace:
drfdt_st1.txt
Workaround
Very very nasty hack is to declare an attribute on the model in question called
function
. This prevents the crash, but sorting still does not work.