1

我有一个这样的模型

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 中输入并将其作为日期时间字段(最终经过一些努力)?我希望代码假设与当前日期相同的日期给出 HH:MM

4

1 回答 1

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()
于 2013-02-17T19:13:07.857 回答