Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在基于类的视图中使用以前的输入初始化django表单?_Python_Django_Forms_Search_Get - Fatal编程技术网

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