Удаление начального значения из формы - PullRequest
1 голос
/ 12 марта 2012

У меня есть такая форма:

class StoreForm(forms.Form):
    title = forms.CharField()
    link = forms.URLField(verify_exists=True, required=False, initial='http://')

Когда я заполняю форму и оставляю поле ссылки нетронутым, я выдаю ошибку, потому что http://, очевидно, не является действительной ссылкой.Каков наилучший способ удалить начальное значение для получения правильной формы?

Ответы [ 2 ]

2 голосов
/ 12 марта 2012

Вы можете поиграть с переданными значениями, переопределив метод clean_foo () для поля.

class StoreForm(forms.Form):
    title = forms.CharField()
    link = forms.URLField(verify_exists=True, required=False, initial='http://')

    def clean_link(self):
        data = self.cleaned_data['link']
        if data == 'http://':
            return ''
        else:
            return data
0 голосов
/ 12 марта 2012

Правильный способ сделать это, я думаю, будет расширить виджет по умолчанию и переопределить value_from_datadict метод, как можно увидеть здесь:

Вы также можете переопределить метод clean () для поля (расширение URLField).

Идея будет проверить, если value == initial и вернуть None в этом случае.

Также имейте в виду, что verify_exists имеет некоторые проблемы с безопасностью, которые можно увидеть здесь: https://www.djangoproject.com/weblog/2011/sep/09/security-releases-issued/ (атака типа "отказ в обслуживании" через URLField)

...