簡體   English   中英

額外的字段不在Django Modelform的清理數據中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM