Я не смог показать ошибки проверки django в моей модальной форме загрузки. Мне нужно установить поле client_phone в форме не менее 13 символов, если нет - показать ошибку и выделить поле. Джанго - 1.10, Бутстрап 3Django ModalForm показать ошибку проверки на bootstrap Модальная форма
Вот код:
Модель:
class Order(models.Model):
order_date = models.DateTimeField(auto_now_add=True, blank=True)
client_phone = models.CharField(max_length=18)
client_email = models.EmailField(max_length=50)
затем ModelForm:
class OfferForm(ModelForm):
class Meta:
model = Order
fields = ['client_phone', 'client_email']
widgets = {
'client_phone': TextInput(attrs={'class': 'form-control bfh-phone', 'data-country': 'UA', }),
}
labels = {
'client_phone': _('Контактный номер'),
}
Шаблон с начальной загрузки модальной формы:
<div class="modal fade" id="offerModalForm" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<form role="form" action="ordercomplete" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<div class="modal-footer">
<button type="submit" id="offerSubmitBtn" class="btn btn-primary" type="submit">
Оформить заказ
</button>
<button type="button" class="btn btn-primary"
data-dismiss="modal">
Закрыть
</button>
</div>
</form>
</div>
</div>
</div>
</div>
Если я так:
def clean_client_phone(self):
phone = self.cleaned_data.get('client_phone')
if len(phone) < 13:
raise forms.ValidationError(_('Invalid value'), code='invalid')
return phone
Тогда form.isValid() становятся ложными, и ничего не произошло.
Также здесь мое мнение:
def ordercomplete(request):
if request.method == 'POST':
form = OfferForm(request.POST, request.FILES)
if form.is_valid():
order = form.save()
date = order.order_date.strftime('%d-%m-%Y %H:%M')
phone = form.cleaned_data['client_phone']
return render(request, 'viveska/ordercomplete.html')
else:
return render(request, 'viveska/ordercomplete.html')
HTML модальных является частью моей главной странице, где я называю его нажатием кнопки:
<button type="button" class="btn btn-lg make_order_btn" data-toggle="modal"
data-target="#offerModalForm">Оформить заказ
</button>
Update 1:
Я редактировал ordercomplete посмотреть так:
, и теперь он показывает мне полевые ошибки, но каждый раз, когда какое-то значение недействительно, он скрывает форму, потому что она модальная. Как я могу сохранить его на экране после отправки с недопустимыми значениями?
является html страницей 'ordercomplete'?Вы никогда не передаете форму в контекст, поэтому я не уверен, как форма даже показывает – Sayse
no, html - это часть моей главной страницы, где я показываю модальную форму: ordercomplete.html только сказал, что заказ завершается хорошо. Я обновил вопрос. –
В основном вы используете {% if form.errors%} // ваша модальная логика загрузки здесь {% endif%} см. Этот вопрос http://stackoverflow.com/questions/22470637/django-show-validationerror-in-template – oat