Изменить вывод формы с Django Шаблон - PullRequest
0 голосов
/ 07 января 2020

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

class InspectionReportForm(forms.ModelForm):

    class Meta:
        model = InspectionReport
        fields = ('Date', 'Comment', 'Signature')
        labels = {"Date": "Date (YYYY-MM-DD)"}

    def __init__(self, *args, **kwargs):

        super(InspectionReportForm, self).__init__(*args, **kwargs)

        self.fields["Comment"].widget = forms.HiddenInput()
        self.fields["Date"].widget = forms.HiddenInput()
        self.fields["Signature"].widget = forms.HiddenInput()

В которой хранится отчет, помимо даты и кто его написал.

В случае «Pass» или «Fail» отчет. Я хочу общий комментарий c в отчете, чтобы он был заполнен автоматически, поэтому я скрыл это поле. Дата и подпись будут взяты с даты подачи, а подпись будет авторизованным пользователем. Так что в основном все заполнено автоматически.

Однако у меня есть опция «Возможно», которая запрашивает у пользователя комментарий и отправляет его вместо общих c.

Мой вопрос заключается в том, как изменить значение комментария для форма со стадии HTML Template / Javascript моего проекта?

Мой текущий код выглядит следующим образом:

<form method="post" enctype="multipart/form-data">
                {% csrf_token %}
                {{ form.as_p }}

                <center><button type="button" id="pass">Pass</button> 
                        <button type="button" id="fail">Fail</button>
                        <button type="button" id="check" class="collapsible">Check</button>
                        <div class="content"> Comment: <input type="text" name ="comments">
                            <button id="submitCheck">Submit</button>
                        </div>
               </center>

Кнопка Check - это просто складной контейнер, который имеет поле ввода и кнопку отправки для опции «Возможно».

Что касается Javascript, то на самом деле у меня ничего нет, потому что я не могу напрямую изменить значение поля отсюда. Я попытался выбрать поле с помощью {%for field in form%}, но безуспешно

1 Ответ

1 голос
/ 07 января 2020

Вы можете сделать "грязную хитрость", скопировав содержимое вашего поля comment в скрытое поле Comment, используя javascript:

$("input[name=comments]").on("change", function(){
    $("input[name=Comment]").val($(this).val());
})

Или, как мне кажется, лучше Подход, не используйте {{ form.as_p }}, но визуализируйте поля отдельно, чтобы вы могли визуализировать поле {{ form.Comment }} непосредственно внутри вашего свертываемого объекта. Тогда вам не нужно ничего делать в javascript. Вы можете отобразить метку поля, само поле и ошибки поля следующим образом:

{{ form.Date.label_tag }}
{{ form.Date }}
{{ form.Date.errors }}
...