Модель Python / Django, переопределяющая очищенные данные - PullRequest
1 голос
/ 10 ноября 2009

Здравствуйте. В настоящее время я работаю над проектом django, в одной из моих моделей у меня есть загрузка файла и загрузка изображения, при этом для параметров этих двух полей установлено пустое значение = True, однако с этим и именно это поле может быть пустым только в том случае, если одно из двух не является таковым, например, если поле изображения заполнено, то пользователю не нужно загружать файл, а если поле файла заполнено, то пользователю не нужно загружать изображение.

Моя проблема в том, что я изо всех сил пытаюсь выяснить логику, это в разделе администратора, поэтому я понимаю, что мне придется перезаписать чистые данные. Кто-нибудь может помочь?

1 Ответ

4 голосов
/ 10 ноября 2009

Вам просто нужно определить собственный метод clean () в ModelForm, который проверяет, заполнено ли одно или оба поля.

def clean(self):
    file_field = self.cleaned_data.get('file_field')
    image_field = self.cleaned_data.get('image_field')

    if file_field and image_field:
        raise forms.ValidationError("You should only provide one of File or Image")
    elif not file_field and not image_field:
        raise forms.ValidationError("You must provide either File or Image")

    return self.cleaned_data
...