所以我有一个Model,ModelForm和Custom Widget。我的目标是访问自定义小部件中的字段verbose_name和help_text。我无法弄清楚如何在Widget中获取数据,所以我必须将它传递给模型表单中的新SmartTextInput小部件?
这看起来很丑陋,还有更好的方法吗?
这是ModelForm
class LeadForm(ModelForm):
class Meta:
model = Lead
widgets = {
'first_name': SmartTextInput(label=model._meta.get_field('first_name').verbose_name),
'middle_name': SmartTextInput(label=model._meta.get_field('middle_name').verbose_name),
'last_name': SmartTextInput(label=model._meta.get_field('last_name').verbose_name),
}
这是自定义小部件
class SmartTextInput(TextInput):
def __init__(self, attrs=None, label=None):
super(TextInput, self).__init__(attrs)
self.label = label
def render(self, name, value, attrs=None, label=None):
input_html = super(TextFieldWidget, self).render(name, value, attrs)
html = """<label class="label">""" + self.label + """</label>"""
html = html + input_html
return mark_safe(html);