Я пытаюсь сделать модель, в которой уже есть около 5000 записей. Получение его как контекста из представления происходит очень медленно. Поэтому я подумал, давайте использовать ajax, который будет обрабатывать серверную часть. Итак, я попытался создать представление, которое будет обрабатывать ajax запросов, извлекать все данные из модели и возвращать JsonResponse. Теперь, когда я запускаю сервер, у меня возникает следующая проблема:
- Предупреждение DataTables: table id = hospital_table - Запрошенный неизвестный параметр 'id' для строки 0, столбца 0. Для получения дополнительной информации об этой ошибке, пожалуйста см. http://datatables.net/tn/4
Я просмотрел ссылку, но я не могу понять, что не так. Я новичок в django.
Это моя Django Модель:
class Hospital_Data(models.Model):
hospital_name = models.TextField(max_length=100)
hospital_id = models.CharField(max_length=50, unique=True)
category = models.TextField(max_length=50, null=True)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zone = models.CharField(max_length=100)
address = models.TextField(max_length=300)
pincode = models.IntegerField(max_length=10)
phone_number = models.CharField(null=True,max_length=100)
def __str__(self):
return self.hospital_id
Это мнение, что ajax общается с:
def view_hospital_data(request):
hospitalObjs = Hospital_Data.objects.all()[:10]
context = {
"data": list(hospitalObjs.values())
}
print(context)
return JsonResponse(context)
Это печатаемая контекстная переменная:
{'data': [
{'id': 3054, 'hospital_name': 'NAVJEEVAN HOSPITAL', 'hospital_id': 'HOS-MUM-2394',
'category': 'GENERAL HOSPITAL', 'city': 'THANE', 'state': 'MAHARASHTRA', 'zone': 'WEST',
'address': 'STATION ROAD, ', 'pincode': '401202.0', 'phone_number': '0250-2381454'},
{'id': 3564, 'hospital_name': 'R.G.HOSPITAL', 'hospital_id': 'HOS-COM-1914',
'category': 'GENERAL HOSPITAL', 'city': 'COIMBATORE', 'state': 'TAMILNADU', 'zone': 'SOUTH',
'address': '# 78B,KOWAI ROAD, UNNUR', 'pincode': '641653.0', 'phone_number': '04254-262727'},
]}
Это моя HTML таблица
<table class="table my-0" id="hospital_table">
<thead>
<tr>
<th>SL No</th>
<th>Hospital Name</th>
<th>Hospital ID</th>
<th>Category</th>
<th>City</th>
<th>State</th>
<th>Zone</th>
<th>Address</th>
<th>Pincode</th>
<th>Phone Number</th>
</tr>
</thead>
<tfoot>
<tr>
<th>SL No</th>
<th>Hospital Name</th>
<th>Hospital ID</th>
<th>Category</th>
<th>City</th>
<th>State</th>
<th>Zone</th>
<th>Address</th>
<th>Pincode</th>
<th>Phone Number</th>
</tr>
</tfoot>
</table>
Это javascript для Datatable :
jQuery.noConflict()(function ($) {
$(document).ready(function () {
alert("tables are being readied")
$('#hospital_table').DataTable({
serverSide: true,
data: "dataSet",
ajax: {
url: "view_hospital_data",
dataSrc: "data",
type: "GET",
dataType: 'json'
},
deferRender: true,
columns : [
{data: 'id'},
{data: 'hospital_name' },
{data: 'hospital_id' },
{data: 'category' },
{data: 'city' },
{data: 'state' },
{data: 'zone' },
{data: 'address' },
{data: 'pincode' },
{data: 'phone_number' },
],
});
});
});