2015-09-03 7 views
5

Laut Djangos Doc auf SelectDateWidget (https://docs.djangoproject.com/en/1.8/ref/forms/widgets/#selectdatewidget) wird empty_label angezeigt, wenn DateField nicht erforderlich ist. Ich habe festgestellt, dass DateField erforderlich ist, der Standardwert für das Widget January, 1 und <current-year> ist. Gibt es eine Möglichkeit, die DateField erforderlich machen, aber das Widget mit empty_label (z. B. -----) auf dem ersten Formular anzeigen?Anzeige empty_label auf erforderlich selectDateWidget auf Django

Antwort

7

Leider ist nur leeres Etikett in SelectDateWidget verwendet, wenn das Feld nicht erforderlich ist, aber Sie können dies einfach durch Subklassen SelectDateWidget und übergeordnete create_select Methode ändern:

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 

Aber in diesem Fall können Sie auch außer Kraft setzen müssen Validierung Ihres Feldes, so wird es Fehler, dass Feld erforderlich ist, nicht diese Wahl ist ungültig, wenn Auswahl auf leerer Wert verlassen wird.

+0

Hervorragend. Der Fehler, der ausgelöst wurde, wenn alle 3 Felder leer waren, war "Dieses Feld ist erforderlich", und wenn 1 oder mehr Felder leer waren, war "Geben Sie ein gültiges Datum ein". Ich denke, das ist perfekt. Vielen Dank. – vleong

+0

Ich ging davon aus, dass die Validierung nicht darauf vorbereitet ist, aber es sieht so aus. – GwynBleidD