[英]Extra fields not in cleaned data of Django Modelform
我有一個帶有一些額外字段的ModelForm
。 我已覆蓋此表單的clean()
函數,但無法訪問cleaned_data
中的這些額外字段。 驗證下面的表格時,在第二行的最后一行data.get('startDate')
返回None
因為它在清理的數據中沒有找到startDate
。
## Model ##
class Reservation(models.Model):
groupName = models.CharField(max_length=64)
email = models.EmailField()
comments = models.TextField(null=True, blank=True)
## Form ###
class ReservationForm(forms.ModelForm):
startDate = forms.DateField(widget=forms.SelectDateWidget)
endDate = forms.DateField(widget=forms.SelectDateWidget)
class Meta:
model = Reservation
fields = [
'groupName',
'email',
'startDate',
'endDate',
'comments'
]
def clean_startDate(self):
data = self.cleaned_data['startDate']
if data < datetime.date.today():
raise forms.ValidationError('Pick a date in the future')
return data
def clean(self):
data = super().clean()
if data.get('startDate') > data.get('endDate')
raise forms.ValidationError('End date must be after start date.')
我測試這個的方式,startDate默認為今年1月的第一天。 這意味着clean_startDate(self)會引發ValidationError並且不會返回數據(startDate)。 因為所有clean_fieldname()方法都是在clean()之前調用的,所以startDate在clean()函數的cleaning_data中沒有'clean value'。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.