Метод не разрешен (POST): /items/
Итак, я пытаюсь сделать фильтр с помощью django, чтобы фильтровать элементы на главной странице. Немного контекста:
Элемент может быть назначен пользователю или нет. Мне нужен фильтр, чтобы видеть, какие элементы назначены, а какие нет.
Это моя функция в views.py
:
class ItemsView(ListView):
template_name = 'inventory/items.html'
context_object_name = 'items_list'
def get_queryset(self):
if (self.request.user.is_authenticated):
if self.request.method == "get":
searched = self.request.GET.get('searched')
if searched == "None":
return Item.objects.filter(assigned_user__isnull=True, company=getCompany(self.request.user))
else:
return Item.objects.filter(assigned_user__isnull=False, company=getCompany(self.request.user))
else:
return Item.objects.filter(company=getCompany(self.request.user))
А это от моего items.html
:
<form method="post" action="/items">
{% csrf_token %}
<select name="item_filter">
<option value="None">Not Checked In</option>
<option value="Checked_In">Checked In</option>
</select>
<input type="submit" value="filter">
</form>
В основном я хочу, чтобы пользователь мог выбрать один из двух вариантов в выпадающем меню, и элементы должны быть перечислены на основе сделанного им выбора.
Когда я использую эту форму и нажимаю кнопку отправки, экран становится белым, а в моей консоли появляется ошибка
Method Not Allowed (POST): /items/
появляется. Связано ли это с тем, что я использую generic.ListView
для моего представления?
Спасибо
в представлении списка - POST не разрешен. Но вам это и не нужно: В шаблоне:
<form action="/items">
<select name="item_filter">
<option value>Not Checked In</option>
<option value="Checked_In">Checked In</option>
</select>
<input type="submit" value="filter">
</form>
в просмотре:
class ItemsView(ListView):
... # any staff
def get_queryset(self):
query = {'company':getCompany(self.request.user)}
if (self.request.user.is_authenticated):
query[assigned_user__isnull] = bool(self.request.GET.get('item_filter'))
return Item.objects.filter(query)