Здравствуйте, суть в следующем.
На странице таблицей выводятся данные, у каждого столбца есть поле для поиска по нем.
Всего 5 полей. В моем случае я с помощью одной формы и префиксов добавляю 5 полей, т.е. 5 форм.
Таких таблиц будет несколько, а полей для поиска в них более 5. Получиться громоздкий код, да еще и копи-паст.
Как сделать данное решение более правильным.
Код как в данный момент выглядит views.
class ZayavkaList(LoginRequiredMixin, ListView):
context_object_name = 'zayavka'
queryset = Contact.objects.all().order_by('-data')
template_name = 'contactform/zayavki.html'
paginate_by = 10
context = {}
context['form_id'] = SZvonId(prefix='id')
context['form_name'] = SZvonName(prefix='name')
context['form_tel'] = SZvonId(prefix='tel')
context['form_email'] = SZvonName(prefix='email')
# Передаю 5 форм
def get_context_data(self, **kwargs):
context = super(ZayavkaList, self).get_context_data(**kwargs)
context['form_id'] = SZvonId(prefix='id')
context['form_name'] = SZvonName(prefix='name')
context['form_tel'] = SZvonId(prefix='tel')
context['form_email'] = SZvonName(prefix='email')
context['form_data'] = SZvonId(prefix='data')
return context
def post(self, request):
form_i = SZvonId(self.request.POST, prefix='id')
form_n = SZvonName(self.request.POST, prefix='name')
form_t = SZvonId(self.request.POST, prefix='tel')
form_e = SZvonId(self.request.POST, prefix='email')
form_d = SZvonId(self.request.POST, prefix='data')
if form_i.is_valid() and form_i.cleaned_data['search'] != '':
search = form_i.cleaned_data['search']
self.context['zayavka'] = Contact.objects.filter(id = search)
if form_n.is_valid() and form_n.cleaned_data['search'] != '':
search = form_n.cleaned_data['search']
self.context['zayavka'] = Contact.objects.filter(name = search)
if form_t.is_valid() and form_t.cleaned_data['search'] != '':
search = form_t.cleaned_data['search']
self.context['zayavka'] = Contact.objects.filter(tel = search)
if form_e.is_valid() and form_e.cleaned_data['search'] != '':
search = form_e.cleaned_data['search']
self.context['zayavka'] = Contact.objects.filter(email = search)
if form_d.is_valid() and form_d.cleaned_data['search'] != '':
search = form_d.cleaned_data['search']
self.context['zayavka'] = Contact.objects.filter(data = search)
return render(request, self.template_name, self.context)