Как изменить порядок полей формы при ее сортировке в Django?
Я пытаюсь изменить порядок полей формы в таблице, когда пользователь сортирует их в выпадающем меню. В принципе, оно будет в самом верхнем левом углу таблицы, когда пользователь отсортирует его
исходная таблица:
таблица будет выглядеть следующим образом, когда пользователь отсортирует ее по полю name
:
в моем 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