python - 如何在 Django 表单中检查一个字段是否小于另一个字段?
问题描述
我正在尝试检查开始时间是否小于结束时间。如果我不想引发错误。
我的代码如下所示:
class TimeOpeningHoursForm(forms.ModelForm):
class Meta:
model = BusinessOpeningHours
fields = ('mon_st', 'mon_end', ...)
widgets = {
'mon_st': Select(attrs={'class': 'form-control'}),
'mon_end': Select(attrs={'class': 'form-control'}),
...
}
def compare_mon(self):
cleaned_data = self.cleaned_data
st = cleaned_data['mon_st']
end = cleaned_data['mon_end']
if st > end :
raise forms.ValidationError("The start time must be less than the end time.")
else:
return cleaned_data
我的验证代码就像根本不存在一样工作。不引发错误或验证正确性。在视图中,当然,我通过is_valid
方法检查表单。
解决方案
Django 不会自动运行这个方法。您可以覆盖自动调用的.clean()
方法 [Django-doc]以验证相互依赖的字段:
class TimeOpeningHoursForm(forms.ModelForm):
class Meta:
model = BusinessOpeningHours
fields = ('mon_st', 'mon_end')
widgets = {
'mon_st': Select(attrs={'class': 'form-control'}),
'mon_end': Select(attrs={'class': 'form-control'})
}
def clean(self):
cleaned_data = super().clean()
st = cleaned_data['mon_st']
end = cleaned_data['mon_end']
if st > end :
raise forms.ValidationError('The start time must be less than the end time.')
return cleaned_data
推荐阅读
- javascript - 使用 ajax 重新加载选项卡内容而不在刷新时加载页面
- sql - django 和行 sql
- html - 由于这个标志,整个粘性导航是可点击的 如何解决这个问题?
- apache-spark - Spark 显示基于成本的优化器统计信息
- android - 仅从代码中使用的 KeyCharacterMap
- django - 我对芹菜任务的第一次测试
- c# - C# Linq - 选择多个字段,其中一个字段也应使用选择进行过滤
- javascript - 数组项上的 ReferenceError
- mysql - 带有子查询的 SQL WHERE 条件为空
- android - 如何使 Listview 项目视图在LongPress 上可见