Дополнительные поля отсутствуют в очищенных данных Django Modelform - PullRequest
0 голосов
/ 26 марта 2019

У меня есть 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.')

1 Ответ

0 голосов
/ 27 марта 2019

То, как я это тестировал, по умолчанию startDate - первое января этого года.Это означает, что clean_startDate (self) вызовет ValidationError и не вернет данные (startDate).Поскольку все методы clean_fieldname () вызываются до clean (), startDate не будет иметь «очищенного значения» в cleaned_data в функции clean ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...