根据Django在SelectDateWidget(https://docs.djangoproject.com/en/1.8/ref/forms/widgets/#selectdatewidget)上的文档,如果不需要empty_label,则会显示DateField。我注意到如果需要DateField,则小部件上的默认值将为January1<current-year>。有没有一种方法可以使DateField成为必需,但是在初始表单上显示带有empty_label的小部件(例如-----)?

最佳答案

不幸的是,仅在不需要字段时才使用SelectDateWidget中的空标签,但是您可以通过子类化SelectDateWidget并覆盖create_select方法来简单地更改它:

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

但是在这种情况下,您可能还必须覆盖字段的验证,因此它将抛出错误,要求输入该字段,而不是在将select留在空白值上时,该选择无效。

关于python - 在Django的必需selectDateWidget上显示empty_label,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32378379/

10-11 16:00