You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模型时间字段无法在time类型输入框显示值的解决咨询

解决Django时间字段在time类型输入框不显示的问题

出现这个问题的核心原因是Django默认的时间格式与HTML原生time输入框期望的格式不匹配,以下是具体解决方法:

1. 显式配置表单字段的Widget与格式

在自定义表单类中,给时间字段指定TimeInput widget,并设置匹配HTML time输入框的格式(HTML time接受HH:MM或HH:MM:SS的24小时制格式):

from django import forms
from .models import YourModel

class YourModelForm(forms.ModelForm):
    class Meta:
        model = YourModel
        fields = ["your_time_field"]
        widgets = {
            "your_time_field": forms.TimeInput(
                attrs={"type": "time"},
                format="%H:%M"  # 若需秒数则用"%H:%M:%S",12小时制用"%I:%M %p"
            )
        }

也可以直接在字段层面定义,效果一致:

class YourModelForm(forms.ModelForm):
    your_time_field = forms.TimeField(
        widget=forms.TimeInput(attrs={"type": "time"}, format="%H:%M")
    )

    class Meta:
        model = YourModel
        fields = ["your_time_field"]

2. 模板中正确渲染表单字段

避免手动编写value属性,直接使用Django表单的渲染方法,让框架自动生成符合格式的输入值:

<form method="post">
    {% csrf_token %}
    {{ form.your_time_field.label_tag }}
    {{ form.your_time_field }}
    <button type="submit">保存</button>
</form>

3. 排查时区与本地化影响

如果项目启用了时区支持,可尝试关闭时间字段的本地化转换,确保格式匹配:

your_time_field = forms.TimeField(
    widget=forms.TimeInput(attrs={"type": "time"}, format="%H:%M"),
    localize=False
)

4. 确认模型字段的合法性

确保模型中的时间字段是标准的TimeField定义,无自定义格式冲突:

from django.db import models

class YourModel(models.Model):
    your_time_field = models.TimeField()

内容的提问来源于stack exchange,提问作者Shaheem PP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:45:36