Django - 将 CSS 类添加到 SplitDateTimeWidget?

标签 django forms

我已使用 SplitDateTimeWidget 覆盖模型表单中的字段。 有没有办法将 css 类分配给由此创建的各个字段?

widgets = {
              'my_field': SplitDateTimeWidget(),
                }

任何建议表示赞赏。

在我尝试了你的代码后布兰登:

如果我在不传递属性的情况下尝试它,我会得到: “NoneType”对象不可迭代

对于 attrs_dict = dict(attrs) 行。

如果我确实包含属性,我会得到: “tuple”对象没有属性“copy”

位于 init 中的/usr/local/lib/python2.6/dist-packages/django/forms/widgets.py,第 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'}))

我已经在 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">

我尝试了各种方法来复制传入的属性以保留可能存在的任何其他参数,但我遇到了错误,不幸的是我今天已经没有时间了。这应该可以帮助您继续操作,但只允许您修改字段的类属性。

关于Django - 将 CSS 类添加到 SplitDateTimeWidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6752792/

相关文章:

python - Django QuerySet 按 ID 自定义排序

python - 如何使用 Django 发布和检索 blob

python - django - 变量更改时导入不同的模块

java - 无法从jsp页面形式调用servlet

java - 将自定义类对象添加到显示歧义的列表

javascript - 根据用户输入动态构造数组 - Javascript/jQuery

Angular react 形式将 form.values 转换为模型

使用 ffprobe 对 NamedTemporaryFile 拒绝 Python 权限

python - Django 和根进程

java - 获取 Jersey 后端的所有输入文件