如何修改 SplitDateTimeField 的基本 Django 模板?

How can I modify the basic Django template for SplitDateTimeField?

我有一个简单的 SplitDateTime 字段:

meeting_datetime_start = forms.SplitDateTimeField(input_date_formats=["%a %d/%m/%Y"], input_time_formats=["%I:%M %p"])

这会呈现以下内容 HTML:

<input id="id_meeting_datetime_start_0" name="meeting_datetime_start_0" type="text">
<input id="id_meeting_datetime_start_1" name="meeting_datetime_start_1" type="text">

我正在使用 bootstrap,并希望添加自定义模板以不同方式呈现此 HTML,例如:

<div class="col-xs-2">
   <input id="id_meeting_datetime_start_0" name="meeting_datetime_start_0" type="text">
</div>
<div class="col-xs-3">
    <input id="id_meeting_datetime_start_1" name="meeting_datetime_start_1" type="text">
</div>

如何修改 SplitDateTimeField 的基本 Django 模板?

您有一些可能的解决方案。

1。子类化 SplitDateTimeWidget 并重新定义它的渲染方法

通过将该小部件子类化,您可以将任何您想要的内容注入到结果代码中。之后只需简单地使用您自己的小部件和默认的 SplitDateTimeField

2。手动在模板中创建输入

可能是最简单的解决方案,但在我看来却是最丑陋的。手动在模板中创建代码,为名称、ID、值等使用适当的变量。您必须添加 _0、_1 后缀并手动格式化现有值。

3。创建将注入额外 div 的模板标签

您可以创建一些模板标签或过滤器,它们将在默认模板上执行一些文本操作以添加额外的 div。