1

我的应用程序处理记录时间。在模型中,它将时间段存储为整数分钟。在前端,我希望用户能够以整数分钟、十进制小时(例如 1.5 = 90 分钟)或小时和分钟(例如 01:30 = 90 分钟)的形式输入时间。我还希望表单以用户的首选格式显示字段值(他们可以在配置文件模块中设置)。

我已经设置了一个模板过滤器,它采用用户的偏好并在显示页面上为每个条目显示适当的格式(在上下文中发送并通过模板标签格式化程序提供),但我想在表单上做同样的事情 - 即以适当的格式显示表单值,并允许用户以三种不同格式中的任何一种输入时间。

这是我所拥有的大致轮廓,该模型允许用户为系统中的各个字段设置启动状态:

模型.py:

class PreviousHours(models.Model):
    user = models.OneToOneField(User)
    logged_minutes_1 = models.PositiveIntegerField(default=0)
    logged_minutes_2 = models.PositiveIntegerField(default=0)
    logged_minutes_3 = models.PositiveIntegerField(default=0)
    ...

表格.py:

class PreviousHoursForm(forms.ModelForm):
    class Meta:
        model = PreviousHours
        exclude = ('user')

要将整数分钟转换为适当的格式,我有一个format_minutes调用minutes_to_decimal_hoursminutes_to_hhmm酌情的方法。这些返回适当格式的时间,或者如果分钟 = 0,则返回空字符串。我也有接受字符串的方法,用正则表达式检查它的格式并将分钟作为整数返回,如果格式错误则抛出异常。

我已经在模板中手动创建了我的表单布局,因为它非常具体,所以我目前正在使用{{ form.logged_minutes_1 }}样式条目来适当地呈现输入框。

我需要创建一个新的表单小部件来执行此操作吗?还是有其他方法?我不完全确定最好的方法。

4

0 回答 0