Django 如何在按钮上的SelectDateWidget中设置月、年和日的名称?
形式:Django 如何在按钮上的SelectDateWidget中设置月、年和日的名称?,django,Django,形式: bir_date = DateField(widget=SelectDateWidget(years=range(1900, 2020), label="") 但直到我并没有按下月、日或年的下拉列表,按钮看起来是这样的(---) 如何使它不显示(--),而是显示('月'、'年'、'日)?不幸的是,您将需要子类化SelectDateWidget。您将在中看到,none\u值在init函数中不可更改 以下是一个未经测试的示例: from django.forms.extras.widget
bir_date = DateField(widget=SelectDateWidget(years=range(1900, 2020), label="")
但直到我并没有按下月、日或年的下拉列表,按钮看起来是这样的(---)
如何使它不显示(--),而是显示('月'、'年'、'日)?不幸的是,您将需要子类化
SelectDateWidget
。您将在中看到,none\u值在init函数中不可更改
以下是一个未经测试的示例:
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函数以传入无值字典,并在get\u none\u value
中使用它(如果有)。我不明白如何重写init函数您只需定义def\u init\u(self,attrs=none,years=none,required=True):
在新类中。我这样做,但在函数中我不知道我必须做什么。