2017-09-21 2 views
0

Ich habe ein Form enthält ein SelectField, etwa wie folgt:eine SELECT wählen Sie nichts von Standard

CHOICES = [ 
    ('A', 'Apple'), 
    ('B', 'Ball'), 
    ('C', 'Cat'), 
] 

class MyForm(Form): 
    choice = SelectField(choices=CHOICES) 
    # ...other fields here... # 

Wenn ich die Form machen es die SELECT mit 'Apple standardmäßig ausgewählt zeigt. Aber ich möchte am Anfang nichts gewählt haben, so dass der Benutzer gezwungen ist, die Wahl selbst zu treffen.

Gibt es eine Möglichkeit, eine leere Auswahl zu rendern, die standardmäßig angezeigt wird, aber keine gültige Wahl ist, nachdem das Formular abgeschickt wurde?

Antwort

0

Eine Option mit dem Wert None wird im Formular angezeigt, ist aber immer noch ungültig, wenn sie gesendet wird. Sie können es als Standard-Option wie folgt festgelegt:

CHOICES = [ 
    (None, ''), # <-- This option is invalid when submitted 
    ('A', 'Apple'), 
    ('B', 'Ball'), 
    ('C', 'Cat'), 
] 

class MyForm(Form): 
    choice = SelectField(choices=CHOICES, default=None) 
    # ...other fields here... # 

default=None zum SELECT optional Hinzufügen, denn das ist das Standardverhalten ohnehin ist.

Sie können dem Wert auch eine Zeichenfolge hinzufügen, z. B. (None, '--') oder (None, 'Please select an option'). Diese Option ist weiterhin ungültig.

Hinweis: Ich vermute, dass dieses Verhalten nichts mit dem Keine-Objekt selbst zu tun, sondern geschieht, weil es zu 'None' (Typ Unicode) dazu gezwungen wird, wenn von der Form vorgelegt und damit nicht den ursprünglichen None (Typ NoneType überein).

Verwandte Themen