Каков наилучший способ отловить и показать ошибку, если пользователь вводит только пустое пространство в поле формы в Django? - PullRequest
2 голосов
/ 01 декабря 2008

В Django 1.0, как лучше всего поймать и показать ошибку, если пользователь вводит только пробел ("") в поле формы?

class Item(models.Model):
    description = models.CharField(max_length=100)

class ItemForm(ModelForm):
    class Meta:
        model = Item

если пользователь вводит только пробельные символы ("") в описании CharField, какое изменение необходимо сделать для класса Item или класса ItemForm, чтобы form.is_valid () завершился ошибкой и показал ошибку?

После form.is_valid () я мог бы написать код для проверки только пробелов в поле описания и вызвать ошибку проверки, но должен быть лучший способ. Можно ли использовать RegexField для указания введенного описания, которое не должно быть просто пробелами. Есть предложения?

Ответы [ 3 ]

3 голосов
/ 02 декабря 2008
class ItemForm(forms.ModelForm):
    class Meta:
        model = Item

    def clean_description(self):
        if not self.cleaned_data['description'].strip():
            raise forms.ValidationError('Your error message here')

Документация для проверки форм может обеспечить хорошее чтение.

1 голос
/ 02 декабря 2008

почему регулярное выражение? просто используйте str.strip(), чтобы проверить, состоит ли строка только из пробела

1 голос
/ 02 декабря 2008

Разобрался. Простое добавление description = forms.RegexField (regex = r '[^ (\ s +)]') в класс ItemForm вызовет сбой form.is_valid () и отобразит ошибку

class ItemForm(ModelForm):
    description = forms.RegexField(regex=r'[^(\s+)]')
    class Meta:
        model = Item

Чтобы добавить собственное сообщение, добавьте error_message = ... в forms.RegexField

description = forms.RegexField(regex=r'[^(\s+)]', error_message=_("Your error message here."))
...