Django формы для фильтрации
Я пытаюсь сделать форму для фильтрации таблицы по ее столбцам, условию и тексту, заданному пользователем (текст не обязателен). например, пользователь выбирает столбец, больше, меньше, равно и т.д.
формы
class FilterForm(forms.Form):
COLUMN_FILTER_CHOICES = (
('title', 'Title'),
('quantity', 'Quantity'),
('distance', 'Distance'),
)
CONDITION_FILTER_CHOICES = (
('equals', 'Equals'),
('contains', 'Contains'),
('greater', 'Greater'),
('lower', 'Lower'),
)
search = forms.CharField(required=False)
column_filter_field = forms.ChoiceField(choices=COLUMN_FILTER_CHOICES)
condition_filter_field = forms.ChoiceField(choices=CONDITION_FILTER_CHOICES)
просмотров
class TableView(ListView):
model = Table
template_name = 'spa/index.html'
context_object_name = 'table'
paginate_by = 5
def get_queryset(self):
query = self.request.GET.get('search')
column_filter_field = self.request.GET.get('column_filter_field')
condition_filter_field = self.request.GET.get('condition_filter_field')
return Table.objects.all()
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['tables'] = Table.objects.all()
context['form'] = FilterForm(initial={
'search': self.request.GET.get('search', ''),
'column_filter_field': self.request.GET.get('column_filter_field', ''),
'condition_filter_field': self.request.GET.get('condition_filter_field', ''),
})
return context
шаблон
<form action="" method="get" class="inline">
{% csrf_token %}
{{ form.column_filter_field }}
{{ form.condition_filter_field }}
{{ form.search }}
<input type="submit" class="btn btn-default" value="Search">
</form>
форма сейчас работает, ответа от формы нет.
и мне нужно обновлять таблицу в реальном времени без обновления страницы, я не могу найти никакой информации для фильтрации в реальном времени, возможно ли это сделать с помощью django?
Я бы посоветовал вам использовать библиотеку javascript, такую как datatable.
.
Ваше представление Django заполнит таблицу всеми записями, и у вас будет удобный интерфейс для поиска, фильтрации, упорядочивания данных по желанию пользователей, на стороне клиента, без обращения к бэкенду. Он также поддерживает обработку Ajax, если это необходимо.