2016-09-10 3 views
0

eine Django Form mit einigen Bereichen Gegeben:Django Checkbox aktiviert/deaktivieren Sie mit Regeln

class FruitsForm(forms.Form): 
    fruit_choices = forms.TypedMultipleChoiceField("Fruits I Like", required=True, 
    widget=forms.CheckboxSelectMultiple()) 
    name = forms.CharField(required=True, max_length=20) 

Ich habe eine Reihe von 3 Früchten - Apfel, Orange und Birne. Wenn das Formular geladen wird, möchte ich jedoch nur, dass Apple vorab ausgewählt ist.

Ich weiß, dass, um ein Kontrollkästchen aktiviert, verwenden Sie das attrs={'checked' : 'checked'} Wörterbuch, aber wie mache ich es auf einer feineren Ebene?

Mit anderen Worten, würde ich die Form aussehen:

Name: [Text Field] 

Fruits I Like: Apple [X] 
Fruits I Like: Orange [ ] 
Fruits I Like: Pear [ ] 

Antwort

1

Um dies zu erreichen, wollen Sie initial verwenden. Wenn Sie einen Wert von initial angeben, können Sie eine vorausgewählte Option festlegen.

Zum Beispiel, wenn Sie Ihre Auswahl als solche sind zu senden: choices = ((1, 'Apple'), (2, 'Orange'), (3, 'Pear')), würden Sie tun:

fruit_choices = forms.TypedMultipleChoiceField(label="Fruits I Like", required=True, widget=forms.CheckboxSelectMultiple(), choices=choices, initial=1)

Wenn Sie diese Regel auf Basis sein wollen, können Sie auch zum Beispiel wählen, Set initial = my_initial_fruit wo my_initial_fruit ist eine Funktion an anderer Stelle im Projekt definiert.

+0

Nur eine letzte Sache hinzuzufügen: Wenn "initial" mehrere Werte hat, dann machen Sie das eine Liste. Zum Beispiel "initial = [1, 2]" – bryansis2010

Verwandte Themen