我使用SplitDateTimeWidget来覆盖模型表单中的字段.有没有办法将css类分配给由此创建的各个字段?
widgets = {
'my_field': SplitDateTimeWidget(),
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏
在我尝试了你的代码后Brandon:
如果我在没有通过attrs的情况下尝试它,我会得到:'NoneType'对象不可迭代
对于线attrs_dict = dict(attrs).
如果我确实包含了attrs,我得到:'tuple'对象没有属性'copy'
at /usr/local/lib/python2.6/dist-packages/django/forms/widgets.py in init,第147行
是的,您可以传入attrs = {'class':'your_class'},但它会将该类应用于DateInput和TimeInput.
如果您需要为这两个字段添加不同的类,您可能需要扩展SplitDateTimeWidget,覆盖init.
class MySplitDateTimeWidget(SplitDateTimeWidget):
def __init__(self, attrs=None, date_format=None, time_format=None):
date_class = attrs.pop('date_class')
time_class = attrs.pop('time_class')
widgets = (DateInput(attrs={'class' : date_class}, format=date_format),
TimeInput(attrs={'class' : time_class}, format=time_format))
super(SplitDateTimeWidget, self).__init__(widgets, attrs)
#forms.py
class MyForm(forms.Form):
test_field = forms.DateTimeField(widget=MySplitDateTimeWidget(attrs={'date_class' : 'foo', 'time_class' : 'bar'}))
Run Code Online (Sandbox Code Playgroud)
我在Django 1.3中测试了这个,当在一个名为'test_field'的forms.DateTimeField上使用该小部件时,它将输出以下html:
<label for="id_test_field_0">Test field:</label>
<input id="id_test_field_0" class="foo" type="text" name="test_field_0">
<input id="id_test_field_1" class="bar" type="text" name="test_field_1">
Run Code Online (Sandbox Code Playgroud)
我已经尝试了各种方法来复制进入的attrs以保留可能存在的任何其他参数,但我遇到了错误,不幸的是我今天已经没时间了.这应该让你前进,但只允许你修改字段的类attr.
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |