在我的forms.py中 我有一个类Taskform,这是类
中的一个函数def clean(self):
cleaned_data = super(TaskForm, self).clean()
start_date = cleaned_data.get('start_date')
end_date = cleaned_data.get('end_date')
if start_date and end_date:
if start_date >= end_date:
raise forms.ValidationError(_("'End date' must be after 'Start date'"))
admin_time = cleaned_data.get('admin_time')
if admin_time:
cleaned_data['execution_time'] = admin_time
return cleaned_data
我想要做的是 - 只要输入admin_time,就用admin_time替换执行时间。
Models.py 我有像这样定义的execution_time:
execution_time = models.IntegerField(
choices=((i, i) for i in (15, 30, 45, 60)),
blank=False,
default=30,
verbose_name='estimated time'
如果我将选项(15,30,45,60)中的值赋予admin_time,则会运行有效函数。但是,如果为admin_time提供了任何其他值,则会给出无效选择。
如何覆盖验证选项并更新数据?
答案 0 :(得分:0)
您可以覆盖“ChoiceField”中的方法“validate”,而不对列表“choices”表单元素中的状态进行任何检查,并对“清理”表单的方法进行基本检查。为了能够访问“选项”中的项目列表,通常会在模型属性“选项”的级别添加,该选项将在“MyModel.CHOICES”上提供。