from django import forms
class YourForm(forms.Form):
duration_field = forms.DurationField()
def clean_duration_field(self):
data = self.cleaned_data['duration_field']
if value > timedelta(minutes=9, seconds=59):
raise forms.ValidationError("....", code="invalid")
return data
如果您需要在许多地方执行此验证,则可以创建自定义字段以覆盖字段的验证方法:
from django import forms
from django.core.validators import validate_email
class RestrictedDurationField(forms.DurationField):
def __init__(self, limit: timdelta, *args, **kwargs):
super().__init__(*args, **kwargs)
self.limit = limit
def validate(self, value):
super().validate(value)
if value > self.limit:
raise forms.ValidationError("....", code="invalid")
# and usage
class form(Form):
duration_field = RestrictedDurationField(limit=timedelta(minutes=9, seconds=59), ...)
2条答案
按热度按时间h43kikqp1#
您可以为此添加验证器。
它将类似于:
whhtz7ly2#
使用默认值
DurationField
时不可能。可以按以下格式覆盖
clean_%s
方法:如果您需要在许多地方执行此验证,则可以创建自定义字段以覆盖字段的验证方法: