Django DetailView - 将模型中的布尔值显示为复选框

问题描述

有许多代码段可以将 Django Forms 中的布尔值显示为复选框(即将复选框指定为小部件)。例如(假设在 bar 模型中定义了一个布尔字段):

class FooForm(forms.ModelForm):

    class Meta:
        model = Foo
        fields = ['bar'] 
        widgets = {
            'bar' : CheckBoxInput(attrs={'class': 'required checkBox form-control'}),}

但是,我还需要在 DetailView 中显示一个(禁用的)复选框(客户是这么说的)。但是我想不出一种优雅的方法来做到这一点,因为我没有用于详细信息视图的表单元...

我目前的想法是这样的(引导程序复选框):

<div class="form-check">
   <label class="form-check-label">
      <input type="checkBox" {% if foo.bar %}checked{% endif %} disabled>Bar
   </label>
<\div>

有什么方法可以以更接近表单小部件的方式完成此操作?

解决方法

在视图中让你形成并设置初始值
获取模型对象并设置条形初始值

form = YourForm(initial={'bar':modelObject.bar })

然后将表单发送到模板并简单地呈现 像form.bar 您可以通过多种方式禁用此功能

喜欢

class FooForm(forms.ModelForm):

    class Meta:
        model = Foo
        fields = ['bar'] 
        widgets = {
            'bar' : CheckboxInput(attrs={'class': 'required checkbox form-control','disabled':'disabled or true'}),}

或查找并使用任何模板过滤器向表单字段添加属性

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...