Как изменить порядок полей формы при ее сортировке в Django?

Я пытаюсь изменить порядок полей формы в таблице, когда пользователь сортирует их в выпадающем меню. В принципе, оно будет в самом верхнем левом углу таблицы, когда пользователь отсортирует его

исходная таблица:

enter image description here

таблица будет выглядеть следующим образом, когда пользователь отсортирует ее по полю name:

enter image description here

в моем forms.py у меня есть поле в порядке:

class myForm(forms.ModelForm):

class Meta:

    model = myModel

    fields = [    
            "email",
            "name",
            "order",
         ]

и в моем models.py:

class myModel(models.Model):
   name = models.CharField(max_length=100, null=True)
   email = models.CharField(max_length=100, null=True)
   role = models.CharField(max_length=100, null=True)

мой шаблон.html:

{%for items in qs %}
<tr>

        <td>
            <a href="{% url 'crud-view' items.id %}">View</a>
            |
            <a href="{% url 'crud-update' items.id %}">Edit</a>
            |
            <a href="{% url 'crud-delete' items.id%}">Delete</a>
        </td>
        <td>{{items.email}}</td>
        <td>{{items.name}}</td>
        <td>{{items.role}}</td>

в моем views.py я пытался:

qs = myModel.objects.all().order_by("name")

но он просто сортирует элементы внутри поля name. как я могу сделать так, чтобы поле name отображалось в самой верхней левой части таблицы?

Для этого можно использовать метод order_fields.

self.order_fields(sorted_fields)

Документация: https://docs.djangoproject.com/en/3.2/ref/forms/api/#django.forms.Form.order_fields

Я решил эту проблему с помощью django-django-tables2-column-shifter

Вернуться на верх