Datatables с Django не может получать данные из базы данных MySQL - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь получить данные путем поиска в строке поиска по умолчанию, предоставленной datatables с использованием Django.По умолчанию отображается вид, но когда я ищу в окне поиска, он ничего не показывает.Это представление выглядит так: enter image description here

Мой вид таков:

def searchProductTable(request):
    xh = ProductLaptop.objects.all()
    context = {
        "xh": xh
    }
    return render(request, "searchTableView.html", context)

для модели ниже:

class ProductLaptop(models.Model):
    laptops_name = models.CharField(max_length=500, null=True, blank=True)
    laptops_url = models.CharField(max_length=500, null=True, blank=True)
    laptops_price = models.IntegerField(null=True, blank=True)
    laptops_image = models.CharField(max_length=400, null=True, blank=True)
    brand_name = models.CharField(max_length=20, null=True, blank=True)

    def __str__(self):
        return self.laptops_name

Я знаю, что модель неверна, и в то же время я не знаю, как я буду реализовывать модель, потому что у меня нет такого большого опыта работы с Django.

Код моего файла .html:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Search Table</title>
    <link href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet">
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
    <script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>


</head>
<body>
  <table id="example" class="display" style="width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Seller</th>
                <th>Price</th>

            </tr>
        </thead>
        <tbody>
        {% for foo in xh %}
            <tr>


                <td>{{ foo.laptops_name}}</td>
                <td>{{ foo.brand_name}}</td>
                <td>{{ foo.laptops_price}}</td>
                {% endfor %}


            </tr>
        </tbody>
  </table>

<script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<script>
    $('#example').dataTable({
    ajax: {
        url: 'http://127.0.0.1:800/searchtable/',
        dataSrc: ''
    },
    columns: [
        { "data": "laptops_name"},
        { "data": "brand_name"},
        { "data": "laptops_price"},
    ]
});
</script>

</body>
</html>

Может кто-нибудь, пожалуйста, помогите мне решить эту проблему.Я пытался реализовать сортировку, поиск и разбиение на страницы с DataTable в течение последних двух дней.

1 Ответ

0 голосов
/ 24 января 2019

Во-первых, вам не нужно явно указывать определения столбцов в вашем HTML. Все, что вам нужно, это <table id="example"></table>.

Кроме того, вы должны обратить внимание, что, поскольку вы устанавливаете dataSrc в пустую строку, ваш клиент ожидает массив записей от сервера.

Итак, вы можете проверить возможные ошибки и формат данных, полученные с сервера, используя консоль инструментов разработчика вашего браузера, для устранения проблемы.

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