我试图渲染一个数据表使用django数据表视图,但它总是给出这个错误,当我试图搜索,django.core.exceptions.FieldError: Related Field got invalid lookup: istartswith
。我使用的模型有一个指向另一个模型的ForeignKey。我已经尝试了所有我能找到的解决方法。它们不起作用!!
我试过https://datatables.net/forums/discussion/55916/searching-on-columns-with-data-null
https://bitbucket.org/pigletto/django-datatables-view/issues/5/order_columns-doesnt-work-with-foreign和
https://github.com/izimobil/django-rest-framework-datatables/issues/58
javascript
var customerTable = $(DOMstrings.customerTable ).DataTable({
"processing": true,
"searching": true,
'pageLength': 30,
//"lengthMenu": [ 50, 100, 150, 200 ],
//"colReorder": true,
"scrollY": 500,
//"scrollX": 1500,
//"deferRender": true,
"responsive": true,
"ordering": true,
"paging": true,
"lengthChange": true,
"ajax": {
"url": customerListURL,
},
"serverSide": true,
"columns": [
{ "fields": "id" },
{ "fields": "customer.first_name"},
{ "fields": "amount" },
{ "fields": "date_time" },
//{ "fields": "picture" },
//{ "searchable": "false" },
],
dom: 'Bfrtip',
buttons: [
'colvis',
'pageLength',
],
});
class CustomerListJsonView(LoginRequiredMixin, BaseDatatableView):
"""This is the view used by Datatables.net to render the Datatable"""
# The model we're going to show
model = Customer
columns = ['id', 'customer', 'amount', 'date_time']
# This defines columns that will be used in sorting
order_columns = ['id', 'customer', 'amount', 'date_time']
max_display_length = 100
def render_column(self, row, column):
# We want to render phone number as a custom column
if column == 'date_time':
return row.date_time.strftime('%b %d %Y %I:%M %p')
else:
return super(CustomerListJsonView, self).render_column(row, column)
好吧,我希望我的回答能帮助别人,因为我想现在回答这个问题已经太晚了。我面临着同样的问题,直到我发现我应该在模板中添加引用外键的data-name属性,如下所示:
数据名="ForeignKeyModel.ForeignKeyName"然后,数据表将以django可以接受的形式发送搜索语句(iconcontains或regex)。
查看这里的文档:https://django-rest-framework-datatables.readthedocs.io/en/latest/tutorial.html a-more-complex-and-detailed-example