Django Создать Просмотр формы проверки предупреждений - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть форма Создать представление , которая выглядит следующим образом:

class LineItemCreateView(CreateView):
model = LineItem
fields = ('sku', 'description', 'quantity', 'order', 'status')

def get_form(self, form_class=None):
    form = super(LineItemCreateView, self).get_form(form_class)
    form.fields['order'].initial = self.kwargs['order_id']
    form.fields['description'].widget = forms.Textarea()
    return form

urls.py

path('<int:order_id>/add-new-record/',
     LineItemCreateView.as_view(), name='lineitem_form'),

и html шаблон

{% load crispy_forms_tags %}
{% block content %}
<form method="post" novalidate>
    {% csrf_token %}
    {{ form|crispy }}
    <button type="submit" class="btn btn-success" formnovalidate>Save record</button>
</form>
{% endblock %}

Когда пользователь загружает страницу формы в первый раз, для каждого поля появляются предупреждения о проверке. Это приводит к тому, что в форме не отображаются начальные значения, которые я установил. Однако если я обновлю sh URL-адрес, то все будет выглядеть так, как должно.

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

Нажатие кнопки

Первая загрузка

Требуемая первая загрузка

Дополнительная ссылка: Отключить проверку при вызове формы в первый раз

1 Ответ

0 голосов
/ 11 февраля 2020

Ваша форма проверяется при первом запуске, потому что вы выбираете представление с помощью запроса POST вместо запроса GET. Когда вы отправляете POST в представление, вы отправляете данные для формы, даже если эти данные пусты. Таким образом, ваша форма будет привязана к данным, проверена и содержит ошибки.

Вам необходимо запустить представление с запросом GET. Убедитесь, что ссылка на ваш вид - это простая ссылка (тег <a>), а не кнопка отправки.

...