Django: füllen Sie die form aus der get-Methode

Form:

class SearchJobForm(forms.Form):
    query = forms.CharField()  
    types = forms.ModelChoiceField(queryset=JobType.objects.all(), widget=forms.CheckboxSelectMultiple())

Ansicht

def jobs_page(request):
if 'query' in request.GET:
    form = SearchJobForm(request.GET)
else:
    form = SearchJobForm()
variables = RequestContext(request, {

                                     'form':form,
                                     })
return render_to_response('jobs_page.html', variables)

Nachdem ich das Formular abschicken ich versuchen, um seine Werte wieder in form

 form = SearchJobForm(request.GET)

aber es funktioniert nicht(einige Felder verschwinden). Vielleicht ist es, weil der ModelChoiceField. Wie fülle ich das Formular mit seinen Werten mittels get-Methode?

  • Es gibt nur zwei Felder, aber Sie sagen, dass "einige Felder verschwinden". Die Felder des Formulars nicht bekommen, besiedelt? Wie werden Sie überprüfen, dass das form-Objekt wird aufgefüllt?
  • Sie sollten erwägen, beginnend mit dem Absenden des Formulars im BEITRAG und code ändern auf Wunsch.POST. Wenn das nicht funktioniert, dann können Sie woanders schauen, für die das problem.
  • Nur der Absenden-button zeigt sich - die anderen 2 Felder nicht angezeigt(die Felder selbst). Ich kann nicht verwenden Sie den post, denn ich habe die Paginierung und im nicht sicher, wie Sie den Seitenumbruch mit der post.
  • Beide request.POST und request.GET sind [QueryDicts][1], also entweder funktionieren sollte. Sind Sie sicher, dass der request-Parameter in der Anfrage.BEKOMMEN? Wenn Sie print request.GET an der Spitze der views.py es zeigt den Inhalt dort? [1]: docs.djangoproject.com/en/dev/ref/request-response/...
  • ja, ich kann sehen Inhalt. Zum Beispiel für ?query=d&Typen=1 bekomme ich QueryDict: {u'query': [u 'D'], u'types': [u'1']}, jedoch werden die Felder nicht erscheinen(
  • Poste bitte den vollständigen code der view.

InformationsquelleAutor barin | 2009-12-08
Schreibe einen Kommentar