У меня возникают проблемы с извлечением данных из модели в Django с использованием ajax и отображением их в таблице Datatable - PullRequest
2 голосов
/ 01 августа 2020

Я пытаюсь сделать модель, в которой уже есть около 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' },
        ],
    });
});

});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...