如何在提交之前和之后格式化django表单值

时间:2013-11-06 15:18:12

标签: python django django-forms

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

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

以下是我所拥有的概要,该模型允许用户为系统中的各个字段设置开始状态:

models.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)
    ...

forms.py:

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

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

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

我是否需要创建新的表单小部件才能执行此操作?还是有另一种方法吗?我并不完全确定最佳方法。

0 个答案:

没有答案