2016-05-10 62 views
0

我是新来的,在Django。但我需要你的帮助:)Django提交后更新字段值

我已经创建使用的ListView,FormMixin类和一个简单的FormView的搜索页面:

class Search(ListView,FormMixin): 
    template_name = "users/search.html" 
    form_class = SearchForm 

    def get_context_data(self,**kwargs): 
    """To get results""" 

    def post(self, request, *args, **kwargs): 
    return SearchFormView.as_view()(request) 

而且

class SearchFormView(FormView): 
    template_name = 'users/search.html' 
    form_class = SearchForm 

    def get_success_url(self): 
    return reverse_lazy('users:search') 

    def get_initial(self): 
    if 'keySearch' in self.request.session: 
     for k in self.request.session.pop('keySearch'): 
     initial[k] = self.request.session.pop(k) 

    return initial 

    def form_valid(self, form): 
     print "Form valid" 
     request = form.cleaned_data 
     print "Search field {}".format(request) 
     for k,v in request.iteritems(): 
     self.request.session[k]=v 
     self.request.session['keySearch']=request.keys() 
     return super(SearchFormView,self).form_valid(form) 

但每次,我提交表单, “搜索”字段为空白。我的目标是保持在现场,用户同时输入并显示关键字和搜索结果。我想我没有以一种好的方式使用get_initial方法。

此外,我很抱歉这个脏码。我希望你有解决方案和任何意见将是巨大的:)

问候

+0

您需要预先填写空白表单,然后再发送给用户。 'form_data = {'form_field':'prefilled_form_field_data'}''form = YourForm(initial = form_data)''return render(request,“template.html”,{'form':form})' – rwx

回答

0

您需要分配形式的价值,并再次给他们当你呈现模板,可以尝试像这样,如果它是有用的:

class SearchFormView(View): 
    template_name='users/search.html' 

    def get(self, request, *args, **kwargs): 
     valid_form = yourForm() 
     return render(request, self.template_name,{ 
                "valid_form" : valid_form, 

                })