Python 如何在基于类的视图中使用以前的输入初始化django表单?
它在顶部显示一个表单,当您提交表单时,它将只显示一些符合过滤器的Python 如何在基于类的视图中使用以前的输入初始化django表单?,python,django,forms,search,get,Python,Django,Forms,Search,Get,它在顶部显示一个表单,当您提交表单时,它将只显示一些符合过滤器的报价实例。它工作得很好,但每次我提交它时,表单都会返回初始值。我怎样才能阻止它?我的表单使用GET,视图基于类。此外,表单中的\uuuuu init\uuuu似乎不起作用 views.py class Search(ListView, FormMixin): model = Offer template_name = 'search.html' paginate_by = 20 form_class
报价
实例。它工作得很好,但每次我提交它时,表单都会返回初始值。我怎样才能阻止它?我的表单使用GET
,视图基于类。此外,表单中的\uuuuu init\uuuu
似乎不起作用
views.py
class Search(ListView, FormMixin):
model = Offer
template_name = 'search.html'
paginate_by = 20
form_class = SearchForm
def get_queryset(self):
self.form = SearchForm(self.request.GET)
if self.form.is_valid():
data = self.form.cleaned_data
qs = Offer.objects.all()
if data['book'] != '0':
qs = qs.filter(book_id=data['book'])
qs = qs.filter(worn_degree__in=data['min_worn_degree'])
qs = qs.filter(note_degree__in=data['min_note_degree'])
return qs
else:
return Offer.objects.all()
search.html
{% extends 'base_generic.html' %}
{% block content %}
<form method="get">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<br>
<input type="submit" value="검색">
</form>
{% if object_list %}
{% for object in object_list %}
<p>{{ object.book.title }}</p>
<p>{{ object.seller }}</p>
{% endfor %}
{% else %}
<p>There are no offers.</vp>
{% endif %}
{% endblock %}
在
搜索
类中添加此代码:
def get_context_data(self, *, object_list=None, **kwargs):
form = SearchForm(self.request.GET)
context = super(Search, self).get_context_data(**kwargs)
context['form'] = form
return context
def get_context_data(self, *, object_list=None, **kwargs):
form = SearchForm(self.request.GET)
context = super(Search, self).get_context_data(**kwargs)
context['form'] = form
return context