允许HH:MM在django DateTimeField中输入,而不是长格式

时间:2013-02-14 19:34:30

标签: python django django-models django-forms django-views

我有这样的模型

class Timer(models.Model):
"""Represents a timing system"""

   start_time = models.DateTimeField(default=datetime.datetime.now())
   end_time = models.DateTimeField()

以及将其作为模型的表单

class JobForm(forms.ModelForm):

    class Meta:
        exclude = ['slug','author','duration',]
        model = Job

当我想添加一些时间信息时出现麻烦,我的意思是我必须以长格式输入

DD-MM-YYYY HH:MM:SS 

时间将在它们发生的同一天实时添加,因此长格式看起来像是浪费精力,我宁愿这样做

HH:MM

我不能使用model.TimeField,因为我将计算一个开始时间和结束时间之间的持续时间,有人可能会通过计时睡眠或谁知道还有什么来跨越午夜。 我如何允许在HH:MM中输入并将其作为datetimefield(最后经过一些努力)?我喜欢假设与当前日期相同的代码给出HH:MM

1 个答案:

答案 0 :(得分:1)

在查看表单文档之后,这就是iv决定做的事情,因为我不理解@ cclerville的建议(也许django很差?) 开始: 在我的forms.py

class MyDateTimeField(forms.Field):

    def to_python(self, value):
        # Return an empty list if no input was given.
        if not value:
            return []
        import datetime 
        today = datetime.date.today()
        hhmm = value.split(':')
        val= datetime.datetime.combine(datetime.date.today(), datetime.time(int(hhmm[0]),int(hhmm[1])))
        return val

和表单本身:

class JobForm(forms.ModelForm):
    end_time = MyDateTimeField()