Mic*_*elM 6 django django-forms
我有一个包含持续时间字段的Django模型:
class Entry(models.Model):
duration = models.DurationField()
Run Code Online (Sandbox Code Playgroud)
我想使用ModelForm为这个模型渲染一个表单:
class EditEntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['duration']
Run Code Online (Sandbox Code Playgroud)
这一切都有效.但是,如果编辑现有模型,则在文本框中呈现的持续时间具有格式HH:MM:SS
我将永远不会处理一个多小时的持续时间.如何更改Django在表单中格式化此字段的方式MM:SS?
我在渲染模型时已经使用了自定义模板过滤器,我无法弄清楚如何更改表单的呈现方式.
谢谢
您应该可以通过为该字段提供自定义窗口小部件来执行此操作:
from django.forms.widgets import TextInput
from django.utils.dateparse import parse_duration
class DurationInput(TextInput):
def _format_value(self, value):
duration = parse_duration(value)
seconds = duration.seconds
minutes = seconds // 60
seconds = seconds % 60
minutes = minutes % 60
return '{:02d}:{:02d}'.format(minutes, seconds)
Run Code Online (Sandbox Code Playgroud)
然后在字段上指定此小部件:
class EditEntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['duration']
widgets = {
'duration': DurationInput()
}
Run Code Online (Sandbox Code Playgroud)
当然,如果您提供超过一小时的持续时间,这将导致奇怪...
| 归档时间: |
|
| 查看次数: |
5505 次 |
| 最近记录: |