在Django中为* all * InputText元素添加属性的简单方法?

时间:2011-02-08 20:59:36

标签: django django-forms

我想将class="text"添加到所有TextInput小部件中。我知道我可以添加

    widgets = {
        'myfield': TextInput(attrs={'class':'text'})
    }

对于每一个领域,每一种形式......但是必须有一种更简单的方法吗?我的很多表单都基于ModelForms,所以它会自动为我设置字段和小部件。

3 个答案:

答案 0 :(得分:1)

也许你可以通过使用一个覆盖__init__方法的类继承ModelForm,调用super __init__,然后遍历创建的对象的属性,如果它们是{{的实例1}},添加属性。您可以找出解决方案的具体机制。

这就是我要探索的内容。

答案 1 :(得分:0)

这不是最好或最干净的解决方案,但是使用jQuery呢?

$(document).ready(function(){
  $('input[type=text],input[type=password]').addClass('text');
});

我假设这个目标是样式文本输入,因为IE6不会理解CSS属性

答案 2 :(得分:0)

这是一个基于Django的解决方案,已经提到了。您可以创建一个应用程序“MyForms”并在那里有一个表单模块:

# myforms/forms.py

from django import forms

class Form(forms.Form):
  def __init__(self, *args, **kwargs):
    super(Form, self).__init__(*args, **kwargs)
    for field in self.fields:
      # Turn all CharField widgets to TextInput(attrs={'class'='text'})

class ModelForm(forms.ModelForm):
  def __init__(self, *args, **kwargs):
    # Same as above

然后在你的代码中,执行此操作:

from myforms import forms

而不是

from django import forms