Python 如何在Datatables服务器端呈现Django ForeignKey关系
我被困了好几天,我正在使用这个插件,我需要在服务器端数据表中呈现ForeignKey相关的值,就像:Python 如何在Datatables服务器端呈现Django ForeignKey关系,python,django,ajax,datatable,datatables,Python,Django,Ajax,Datatable,Datatables,我被困了好几天,我正在使用这个插件,我需要在服务器端数据表中呈现ForeignKey相关的值,就像:{{data.pasien_id.name}在典型的django模板中。但是,这种方法不适用于服务器端数据表,并且没有任何文档可以实现这一点。代码如下所示 Models.py class Pasien(models.Model): nama = models.CharField(max_length=40, null=True) class Log_book(models.Model)
{{data.pasien_id.name}
在典型的django模板中。但是,这种方法不适用于服务器端数据表,并且没有任何文档可以实现这一点。代码如下所示
Models.py
class Pasien(models.Model):
nama = models.CharField(max_length=40, null=True)
class Log_book(models.Model):
pasien = models.ForeignKey(Pasien, on_delete=models.PROTECT, null=True)
Views.py
class logbook_json(BaseDatatableView):
model = Log_book
columns = ['id', 'pasien_id']
order_columns = ['id','pasien_id']
def render_column(self, row, column):
if column == 'id':
return escape('{0}'.format(row.id))
else:
return super(logbook_json, self).render_column(row, column)
def filter_queryset(self, qs):
filter_customer = self.request.GET.get('search[value]', None)
if filter_customer:
customer_parts = filter_customer.split(' ')
qs_params = None
for part in customer_parts:
q = Q(id__icontains=part) | Q(pasien_id__icontains=part)
qs_params = qs_params | q if qs_params else q
qs = qs.filter(qs_params)
return qs
templates.html数据表加载
<script class="init" type="text/javascript">
$(document).ready(function () {
$('#responsive-datatablex').DataTable({
// ...
searching: true,
processing: true,
serverSide: true,
stateSave: true,
"ajax": "{% url 'logbook_json' %}",
});
});
</script>
$(文档).ready(函数(){
$('#响应数据表x')。数据表({
// ...
搜索:是的,
处理:对,
服务器端:是的,
stateSave:没错,
“ajax”:“{%url'日志\u json%}”,
});
});
如果让JSON以平面结构(而不是嵌套结构)返回,则更容易:
然后您需要为该列定义从JSON读取的值。这可能相当棘手,因此仔细阅读文档是值得的
必须正确定义datatables列,以便它可以读取此数据。请注意,有数据类型(即用于排序、显示等):
还有其他方法可以达到同样的效果,请参考文档。关键是DataTables列定义必须与JSON中返回的内容匹配
一些提示:
django datatables view
尊重这些规则,但我没有检查
您好,所有列都呈现得很好,唯一的问题是当我需要嵌套视图时,上面的
views.py
是django datatables视图
的基本用法,不幸的是,没有关于如何实现这一点的其他文档像在普通django模板中那样的基本需求。
{
"name": name,
"id": id
}
columns: [
{
"title": "Name",
"data": "name",
"render": {
"_": "name",
},
"searchable": true,
"orderable": true,
"defaultContent": "N/A"
}
]