2015-09-03 16 views
5

In base al documento di Django su SelectDateWidget (https://docs.djangoproject.com/en/1.8/ref/forms/widgets/#selectdatewidget), verrà visualizzato il numero empty_label se non è richiesto lo DateField. Ho notato se è richiesto il DateField, il valore predefinito sul widget sarà January, 1 e <current-year>. C'è un modo per rendere necessario il DateField, ma mostrando il widget con empty_label (come -----) sul modulo iniziale?Visualizza empty_label su richiesto selectDateWidget su Django

risposta

7

Purtroppo, etichetta vuota in SelectDateWidget viene utilizzato solo se il campo non è obbligatorio, ma è possibile semplicemente modificare questa sottoclasse SelectDateWidget e prioritario create_select metodo:

class MySelectDateWidget(SelectDateWidget): 

    def create_select(self, *args, **kwargs): 
     old_state = self.is_required 
     self.is_required = False 
     result = super(MySelectDateWidget, self).create_select(*args, **kwargs) 
     self.is_required = old_state 
     return result 

Ma in questo caso potrebbe essere necessario sostituire anche convalida del tuo campo, quindi genererà un errore nel campo richiesto, non quella scelta non è valida quando la selezione viene lasciata sul valore vuoto.

+0

Superbo. L'errore generato quando tutti e 3 i campi erano vuoti era "Questo campo è richiesto" e quando uno o più campi erano vuoti era "Inserire una data valida". Penso che sia perfetto. Grazie. – vleong

+0

Ho pensato che la convalida non sia stata preparata per questo, ma sembra, lo è. – GwynBleidD