2016-05-10 14 views
0

Ich bin neu hier und in Django. Aber ich brauche Ihre Hilfe :)Django Update Feld Wert nach dem Senden

ich eine Suchseite mit Listview erstellt haben, FormMixin Klasse und eine einfache 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) 

Und

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) 

Aber jedes Mal, schicke ich die Form, Das Feld "Suche" wird ausgeblendet. Mein Ziel ist es, im Feld zu bleiben, die Benutzereingabe und das Schlüsselwort und die Ergebnisse der Suche gleichzeitig anzuzeigen. Ich schätze, ich benutze die get_initial-Methode nicht auf eine gute Art und Weise.

Außerdem tut mir leid für diesen schmutzigen Code. Ich hoffe, Sie haben die Lösung und keine Kommentare würde :)

Mit freundlichen Grüßen

+0

Sie müssen Ihr leeres Formular vor dem Senden an den Benutzer ausfüllen. 'form_data = {'form_field': 'prefilled_form_field_data'}' 'form = YourForm (initial = form_data)' 'return render (Anfrage," template.html ", {'form': form})' ' – rwx

Antwort

0

Sie groß sein, müssen die Formularwerte zuweisen und sie erneut senden, wenn Sie die Vorlage machen, könnte es so versuchen, wenn es sinnvoll ist:

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, 

                })