2013-03-04 2 views
1

В форме я хотел бы иметь определенные поля, которые установлены как пустые, если они содержат ошибки проверки. Например, если у меня есть десятичное поле, называемое price, и оно имеет недопустимое значение blue, я бы просто просто установил поле равным нулю.Django Forms - указать поле пустым, если поле содержит ошибки

Это будет использоваться для создания фильтров поиска по строкам запроса, поэтому, если есть лучшее решение, сообщите мне.

Edit 2

class SearchForm(forms.Form): 
    q = forms.CharField() 
    price = forms.DecimalField(required=False) 

Я хотел бы форму, чтобы иметь возможность обрабатывать недопустимые значения полей таким образом, чтобы форма не становится недействительной. Например, если у меня есть ?q=car&price=100, форма будет работать. Если у меня есть ?q=car&price=circle, я бы хотел, чтобы форма заметила ошибку (значение не является десятичной), но вместо того, чтобы сделать форму недействительной, просто сделайте поле пустым.

clean_* был бы полезен для проверки неточечных ошибок, да? (Ошибки, связанные с типом поля, уже были проверены и аннулированы формой). Если да, то как я должен искать эти ошибки?

Мой подход может быть совершенно неправильным здесь - я в основном пытаюсь создать поисковые фильтры.

ответ

1

Это именно то, что clean_field способ для. Например, например, в вашем примере:

class MyForm(forms.Form): 
    ... 
    def clean_price(self): 
     value = self.cleaned_data['price'] 
     if value == 'blue': 
      value = '' 
     return value 
+0

Как я могу поймать обычные ошибки проверки поля (которые я бы сбросил поля), чтобы они не сделали мою форму недействительной? – RS7

+0

Извините, не уверен, что вы спрашиваете, что уже не покрывается моим ответом. Можете ли вы привести пример? –

+0

Я редактировал свой оригинальный вопрос. Надеюсь, это поможет. Пожалуйста дайте мне знать, спасибо – RS7

Смежные вопросы