【发布时间】:2014-12-17 15:37:45
【问题描述】:
我正在开发一个应用程序,我正在使用时间字段来节省时间,并且我正在使用 jquery 插件来选择时间。我的问题是当我选择插件添加 AM 和 PM 的时间时,django 表单验证返回无效表单。
我尝试了 self.clean_field 方法和 clean 方法从用户提交的时间值中删除 am 和 pm。但没有任何办法。
我的models.py是
class Schedule(models.Model):
day=models.CharField(max_length=2,choices=DAY_OF_WEEK)
start_time=models.TimeField(null=True,blank=True)
end_time=models.TimeField(null=True,blank=True)
def __unicode__(self):
return self.day
我的表格是
class ScheduleForm(forms.ModelForm):
class Meta:
model = Schedule
widgets={
'day':forms.TextInput(attrs={'readonly':True,'class':'day_class_name'}),
'start_time':forms.TextInput(attrs={'class':'schedule_start_time'}),
'end_time':forms.TextInput(attrs={'class':'schedule_end_time'}),
}
time_formats = ['%H:%M', '%I:%M%p', '%I:%M %p']
def clean(self):
print ' i am in clean method'
#start=self.cleaned_data['start_time']
#end=self.cleaned_data['end_time']
#print start, end
# print self.cleaned_data
return self.cleaned_data
def clean_start_time(self):
#print dir(self)
start=self.get('start_time',None)
print start
#print self.data
#print ' i am in clean_start_time method'
#start=self.cleaned_data['start_time']
#print start
#if start and ('AM' or 'PM' in start):
# start.replace('AM','')
# start.replace('PM','')
# return start
return start
def clean_end_time(self):
# print ' i am in clean end_time method'
start=self.cleaned_data['end_time']
#print start
#if start and ('AM' or 'PM' in start):
# start.replace('AM','')
# start.replace('PM','')
#return start
return start
有人可以指导我在实际的 django 表单验证发生之前我必须重写哪种方法以从值中删除 am 和 pm。 帮助将不胜感激
【问题讨论】:
-
配置你的 jquery 插件,让它为你的表单字段提供有效值不是更好吗?
标签: django django-forms django-templates django-views