Jango模型的时间字段
django-timedeltafield的Python项目详细描述
示例
事件模型:
from django.db import models import timedelta class Event(models.Model): start = models.DateTimeField() duration = timedelta.fields.TimedeltaField() @property def finish(self): return self.start + self.duration
在字段中存储数据:
evt = Event.objects.create( start=datetime.datetime.now(), duration=datetime.timedelta(hours=1) ) print evt.finish evt.duration = datetime.timedelta(minutes=3) print evt.finish # We can use valid strings of the format described above. Event.objects.update(duration='2 hours, 45 minutes') evt = Event.objects.get(pk=evt.pk) print evt.finish # We can also assign directly to this field a valid string. evt.duration = '3 days, 2 hours' evt.save() # Note: we need to re-fetch to ensure conversion to timedelta evt = Event.objects.get(pk=evt.pk) print evt.finish
与窗体一起使用。
您可以只使用一个modelform,它将自动选择 timedeltaformfield ,它将处理 格式化字符串和TimeDelta对象。
或者您可以直接使用表单域:
from django import forms import timedelta class EventForm(forms.Form): start = forms.DateTimeField() duration = timedelta.forms.TimedeltaFormField()
此表单域将以以下格式显示值:
2 day, 3 hours, 1 minute
并将解析类似格式的数据。
查看tests.py中的表单字段/小部件输出示例。