2010-11-30 11 views
1

Ich habe einige Frage:
ich django Form und Felder wie MultipleChoiceField
in view.py ich saubere Daten und bekommen URL GET wie diese
http://localhost:8000/?category=&style=&sex=&brand=ASICS&brand=Be+Positive&low_price=&high_price=
beraten Geben Sie mir, ich kann gruppiere Markenfeld und verstecke dich leer.
Ich möchte immer so etwas wie dieses:
http://localhost:8000/?brand=1+2Dekorieren GET URL Formulare mit

Und sonst eine Frage:
Wie kann ich leer Wert (empty_label) für forms.ModelMultipleChoiceFIeld

forms.py:

brand = forms.MultipleChoiceField(required=False, 
            widget=forms.SelectMultiple(attrs={'size':1}) 
           ) 
def __init__(self,app_label=None, *args, **kwargs):   
    super(Search, self).__init__(*args, **kwargs) 
    self.fields['brand'].choices = [('', 'All brands')]+[(brand.name, brand) for brand in Brand.objects.all() ] 

views.py:

if request.method == 'GET' and request.GET: 
    form = SearchForm(app_label, request.GET) 
    if form.is_valid(): 
     brands = form.cleaned_data['brand'] 
     kwargs.update({"brand__name__in": brands}) 
+0

ersten Teil: Ich mochte nicht, wie sieht meine URL – JIoJIaJIu

+0

Sekunde: für mich ist es wichtig, empty_label (das ist keine Bezeichnung als HTML-Label) für forms.ModelMultipleChoiceFIeld – JIoJIaJIu

Antwort

0

Dies ist, wie der Browser mehr Daten einreicht. Es ist Teil der HTML-Spezifikation, der Versuch, es zu ändern, wäre Unsinn und technisch kann ich nicht verstehen, warum Sie versuchen würden, sich darum zu kümmern, wie Ihre URL-GET-Daten aussehen.

Das gesagt, wenn Sie die Art und Weise ändern möchten, die Sie einreicht, benötigen Sie Javascript, um die Daten auf Formular übermitteln zu transformieren. Django hat nichts mit der Sache zu tun.

Mit jQuery zum Beispiel:

$('#form').submit(function(){ 
    //Get form data 
    //Transform into my custom set of vars 
    //Redirect to form's ACTION with my querystring appended. 
}); 

Bitte beachten Sie keine automatische Analyse der Werte auf der Django Seite bekommen. Normalerweise würde es daraus eine Liste für Sie machen, aber jetzt sind Sie dafür verantwortlich, den "Wert + Wert + Wert" selbst zu analysieren.

0

Für leeres Etikett in Formularen, die Sie dies tun könnten -

class SomeForm(forms.Form): 
    h=forms.CharField(label=u'',widget=forms.TextInput(attrs={'value':'Search'})) 

von label als ‚‘ zu halten, erhalten Sie das Etikett als leer. Die attrs sind im Grunde die HTML-Attribute des Formular-Textfelds.

UPDATE: Ich verstehe nicht den ersten Teil Ihrer Frage, aufwendigen ...