#django #django-models #django-forms #django-views
#django #django-модели #django-формы #django-просмотры
Вопрос:
Я хочу скрыть поле form.name_of_parent_if_minor, если возраст (CharField) <18 еще отображается. Я не понимаю, куда писать код jQuery или JS или добавлять отдельный файл js. Для этого мне нужно добавить определение html и добавить тег для age (CharField), или мы также можем выполнить действие над этим.
Я новичок в Django, поэтому, если вы обнаружите какие-либо ошибки в моем коде, буду признателен за любую помощь.
forms.py
class StudentDetailsForm(forms.ModelForm):
class Meta:
model = StudentDetails
views.py
class StudentCreateView(LoginRequiredMixin, CreateView):
template_name = 'student/student_details_form.html'
model = StudentDetails
form_class = StudentDetailsForm
success_url = "/"
HTML
{% extends 'student/base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div id="idParentAccordian" class="content-section">
<form method="POST">
{% csrf_token %}
<div class="card mt-3">
<div class="card-header">
<a class="collapsed card-link" style="display: block;" data-toggle="collapse"
href="#idPersonalInformation">Personal Information</a>
</div>
<div id="idPersonalInformation" class="collapse show" data-parent="#idParentAccordian">
<div class="card-body">
<div class="row">
<div class="col-6">
{{ form.joining_date|as_crispy_field }}
</div>
<div class="col-6">
{{ form.class|as_crispy_field }}
</div>
</div>
{{ form.student_name|as_crispy_field }}
{{ form.father_name|as_crispy_field }}
{{ form.mother_name|as_crispy_field }}
{{ form.gender|as_crispy_field }}
<div class="row">
<div class="col-6">
{{ form.date_of_birth|as_crispy_field }}
</div>
<div class="col-6">
{{ form.age|as_crispy_field }}
</div>
</div>
<div>
{{ form.name_of_parent_if_minor|as_crispy_field }}
</div>
</div>
</div>
</div>
<div class="form-group mt-3">
<button class="btn btn-outline-info" type="submit">Save</button>
<a class="btn btn-outline-secondary" href="javascript:history.go(-1)">Cancel</a>
</div>
</form>
</div>
{% endblock content %}
Ответ №1:
самый простой, но не самый чистый способ — добавить JS-скрипт в ваш html
рекомендуемый способ — добавить статическую папку в ваше приложение и загрузить статические файлы в ваш html-шаблон, используя {% load static %}
Комментарии:
1. Мне нужно передать введенный параметр в функцию. В этом случае, как этого добиться, поскольку я использую теги crispy.