如何创建自定义Django小部件以使用abbr元素?

时间:2014-08-29 10:35:53

标签: django django-forms django-views

我仍然是Django框架的新手,我希望我的表单页面为每个复选框使用以下HTML,而不是CheckboxSelectMultiple使用的默认值:

<abbr title="formation.abbr">formation.label</abbr>
  • formation.abbrCharField个实例中的Formation属性;
  • formation.labelTextField个实例中的Formation属性;

forms.py

class InternalActorForm(forms.ModelForm):
    username = forms.CharField(max_length=30)

    class Meta:
        model = User
        fields = (
            'first_name',
            'last_name',
            'username',
            'password',
            'email',
            'phone',
            'formations'
        )
        widgets = {
            'password': PasswordInput(),
            'formations': CheckboxSelectMultiple()
        }

当前解决方案

我修改了__unicode__方法以输出self.abbrself.description,这很好。但是我更喜欢对输出进行精细控制,所以我可以使用正确的语义。

def __unicode__(self):
    return u'%s (%s)' % (self.abbr, self.description)

我该怎么办?我应该调整forms.pyviews.py吗?

1 个答案:

答案 0 :(得分:0)

我不确定您的表单是如何描述的,因为您没有将其包含在内,但如果您想要添加单独的标签,而该表单未在您的表单中说明,那么我建议您使用周期也是:

{% for field in form %}
 <abbr title="{% cycle 'abbr1' 'abbr2' 'abbr3' %}">{{ field.label_tag }}</abbr>
 ...