【问题标题】:Conditional logic for crispy form脆形式的条件逻辑
【发布时间】:2020-06-16 10:24:21
【问题描述】:

我有一个表单,我想知道在用户为 typeOfTheproject 字段选择“Web 应用程序”之前,我应该如何隐藏“conditionalWeb”字段?

我已经在网上进行了研究,但我绝对不知道如何继续......任何帮助都会很好:)

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 = []
    conditionalWeb=[]
    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)
    conditionalWeb = 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('conditionalWeb')

谢谢你:)

【问题讨论】:

    标签: django forms django-crispy-forms


    【解决方案1】:

    您可以为任务添加一个简单的 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_conditionalweb').show();
        }
    else 
        {
        $('#id_conditionalweb').hide();
        }
    }
    

    您需要从数据库中找到字段的实际 ID 并替换 #id_typeoftheproject#id_conditionalweb 。此外,值 '7' 需要替换为 Web 应用程序的 id。

    【讨论】:

      猜你喜欢
      • 2015-10-03
      • 1970-01-01
      • 2015-11-26
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 2019-04-26
      相关资源
      最近更新 更多