2013-02-14 58 views
1

我有这样允许HH:MM在Django DateTimeField字段类型的输入,而不是长格式

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 

的时间将被添加我的长格式输入该N作为他们碰巧在同一天实时的,所以长格式看起来像费工夫,我宁愿做它作为

HH:MM 

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

+0

您可能正在寻找的东西是这样的:HTTP://stackoverflow.com/questions/9954498/django-datefield-and-timefield-to-python-datetime – cclerville 2013-02-14 21:00:40

+0

删除'default = datetime.datetime.now()'中的括号,并尝试更改[DateTimeInput小部件]的[format]选项(https://docs.djangoproject.com/en/dev/ref/forms/ widgets /#datetimeinput)else [make your own widget](https://docs.djangoproject.com/en/dev/ref/forms/widgets/)。对不起,但我没有更多时间... – jpic 2013-02-14 21:01:25

+1

示例HH:MM:SS小部件和字段 - http://stackoverflow.com/questions/13824266/django-custom-widget-to-split-an-integerfield-into -hours和 - 秒场-IN-A/13825412#13825412 – 2013-02-14 22:09:46

回答

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() 
相关问题