gpt4 book ai didi

django - ModelForm 中的 DurationField 格式

转载 作者:行者123 更新时间:2023-12-04 14:11:03 31 4
gpt4 key购买 nike

我有一个包含持续时间字段的 Django 模型:

class Entry(models.Model):
duration = models.DurationField()

我想使用 ModelForm 为这个模型渲染一个表单:
class EditEntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['duration']

这一切都在起作用。但是,如果编辑现有模型,则文本框中呈现的持续时间的格式为 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)

然后您在字段上指定此小部件:
class EditEntryForm(forms.ModelForm):
class Meta:
model = Entry
fields = ['duration']
widgets = {
'duration': DurationInput()
}

当然,如果您确实提供超过一个小时的持续时间,这会导致奇怪...

关于django - ModelForm 中的 DurationField 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078366/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com