代码之家  ›  专栏  ›  技术社区  ›  ha22109

根据用户选择更改选项

  •  0
  • ha22109  · 技术社区  · 17 年前

    在我的班上,我有大约 12个字段 . 一个领域是 地位 原因 . 当我转到django管理员中的编辑页面时,我只想在状态为“拒绝”时显示第二个字段(原因字段)。问题很简单:只是根据用户输入显示字段。

    2 回复  |  直到 17 年前
        1
  •  3
  •   Guðmundur H    17 年前

    不幸的是,纯粹在服务器端实现这一点并不容易。但是,通过一些JavaScript根据状态切换原因字段的可见性应该相对容易实现。以下是使用jQuery的示例:

    $(document).ready(function() {
        // Toggle visibility on page load
        setReasonVisibility();
    
        // Toggle visibility on status change
        $('form #id_status').bind('change', setReasonVisibility)
    
        function setReasonVisibility() {
            var form = $('form');
            var status = $(form).find('#id_status').val();
            if (status == 'rejected') 
                $(form).find('#id_reason').show();
            else
                $(form).find('#id_reason').hide();
        }
    });
    

    要让表单加载JavaScript文件,需要在 Media 将类添加到模型的表单中,如下所示:

    class YourModelForm(forms.ModelForm):
         class Meta:
             model = YourModel
         class Media:
             js = ('path/to/jquery.js', 'path/to/your-js-file.js')
    

    此解决方案应在Django管理员中无缝工作。

        2
  •  0
  •   Carl Meyer    17 年前

    我不清楚你是否指的是变化 列表 或项目的单个编辑页。如果是后者,@Gu°mundur H有一个很好的jQuery解决方案。如果是前者,你可以在你的模型上提供一个方法, ,如果状态为“拒绝”,则返回原因,否则返回空字符串。然后,可以将此方法的名称包含在 列表显示 背景