Условные логи c для хрустящей формы - PullRequest
0 голосов
/ 04 марта 2020

У меня есть форма, и я хотел знать, как я должен был скрыть поле «conditionnalWeb», пока пользователь не выберет «Веб-приложение» для поля typeOfTheproject? Я провел свое исследование онлайн, но я абсолютно не знаю, как поступить ... Любая помощь будет хороша:)

from django import forms
from configurator import models
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Submit, Layout
from .models import TypeOfProgram, Language, Framework, Database
from crispy_forms.bootstrap import (PrependedAppendedText, PrependedText, FormActions)

class ConfiguratorForm(forms.Form):
    helper = FormHelper()
    helper.form_method = 'POST'
    helper.form_show_labels = False

    queryOfProject = TypeOfProgram.objects.values_list('name')
    queryOfFramework = Framework.objects.values_list('name','version')
    queryOfDatabase = Database.objects.values_list('name','version')
    listFramework = []
    listProject = []
    conditionnalWeb=[]
    listFramework=[((q[0],q[1]),q[0]+" version "+q[1])for q in queryOfFramework]
    listProject=[(q[0],q[0])for q in queryOfProject]
    listDatabase = [((q[0],q[1]),q[0]+" version "+q[1])for q in queryOfDatabase]

    typeOfTheproject = forms.ChoiceField(choices = listProject)
    conditionnalWeb = forms.ChoiceField (choices = [('nothing', '----'),("Only Backend","Only Backend"),("Only Frontend","Only Frontend")])
    wantedFramework = forms.MultipleChoiceField(choices = listFramework)
    wantedDatabase = forms.MultipleChoiceField(choices = listDatabase)
    helper.layout = Layout(
        'typeOfTheproject',
        'wantedFramework',
        'wantedDatabase',
        FormActions(Submit('Finalize and find the result','Finalize and find the result', css_class="btn btn-success")) 
    )
#Not Working
    if typeOfTheproject is 'Web application':
        helper.layout.append('conditionnalWeb')

Спасибо:)

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете добавить простое javascript для задачи:

$(document).ready(function(){
    hideShow()
})

// call hideShow when the user clicks on the project_type dropdownlist
$('#id_typeoftheproject').click(function(){
    hideShow()
});
function hideShow(){
    if(document.getElementById('id_typeoftheproject').value == "7")
    {
        $('#id_conditionnalweb').show();
    }
else 
    {
    $('#id_conditionnalweb').hide();
    }
}

Вам нужно найти действительные идентификаторы полей из базы данных и заменить # id_typeoftheproject и # id_conditionnalweb . Также значение «7» необходимо заменить на идентификатор веб-приложения.

...