我有这样的模型
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
答案 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()