Django: Как отсортировать таблицу, представленную в интерфейсе, по одному столбцу - PullRequest
0 голосов
/ 08 октября 2018

У меня есть модель данных, подобная этой:

class Task(models.Model):
    task_id = models.IntegerField(null=True)
    uptime = models.DateTimeField(auto_now=True)

Шаблон:

<table cellpadding="0" cellspacing="0" border="0" class="display dataTable" id="list">
<thead>
    <tr>
        <th>Id</th>
        <th>Uptime</th>
    </tr>
</thead>
<tbody>
    {% for task in tasks|dictsortreversed:"uptime" %}
    <tr>
        <td>{{task.id}}</td>
        <td>{{task.uptime}}</td>
    </tr>
    {% endfor %}
</tbody>

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

Я пробовал dictsort.Но это не сработало.Теперь, если я нажимаю на заголовок Uptime, кажется, что таблица обработала данные в этом столбце как строку и отсортировала строки в алфавитном порядке rows sorted in the alphabetical order

Вопрос: Какотсортировать эту таблицу по времени в поле Uptime

1 Ответ

0 голосов
/ 08 октября 2018

Я знаю о двух вариантах:

  1. Предоставить your_view , где сортировка контента основывается на "uptime" или "-uptime":

    class TaskListView(ListView):
        model = Task
        paginate_by = 10
    
        def get_queryset(self):
            queryset = super(TaskListView, self).get_queryset()
            if self.kwargs.get('sort'):
                sort_by = self.kwargs.get('sort')
                return queryset.order_by(sort_by)
            return queryset
    

    Затем в Html в вашей таблице заголовков:

    <th>
    {% if view.kwargs.sort == "uptime" %}
        href="{% url "task_sort" 'uptime' %}">Uptime</a>
    {% else %}
        <a href="{% url "task_sort**" '-uptime' %}">Uptime</a>
    {% endif %}
    </th>
    

    В urls.py:

    path('task_list/<str:sort>/', TaskListView.as_view(), name='task_sort')
    
  2. Если вам нужно что-то массивное и сортировать по многим столбцамлучше использовать дополнительные пакеты https://pypi.org/project/django-datatables-view/

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