表格:
bir_date = DateField(widget=SelectDateWidget(years=range(1900, 2020), label="")
但是直到我没有按下月份,日期或年份的下拉列表,按钮看起来像这样(---)。
如何使其显示(---)但显示('月','年',日)?
答案 0 :(得分:1)
不幸的是,您需要继承SelectDateWidget
。您将在django source中看到,{init}功能中无法更改none_value
。
这是一个未经测试的例子:
from django.forms.extras.widgets import SelectDateWidget
class CustomSelectDateWidget(SelectDateWidget):
def get_none_value(self, field):
return {
"year": "Year",
"month": "Month",
"day": "Day",
}[field]
def create_select(self, name, field, value, val, choices):
if 'id' in self.attrs:
id_ = self.attrs['id']
else:
id_ = 'id_%s' % name
if not (self.required and val):
choices.insert(0, self.get_none_value(field))
local_attrs = self.build_attrs(id=field % id_)
s = Select(choices=choices)
select_html = s.render(field % name, val, local_attrs)
return select_html
如果你想让它更灵活,你可以覆盖init函数来传入一个none_value字典,并在get_none_value
中使用它(如果它存在的话)。