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

Django DetailView - display boolean from models as checkboxes

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

class FooForm(forms.ModelForm):

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

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

我目前的想法是这样的(bootstrap 复选框):

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

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

在视图中获取表单并设置初始值
获取模型对象并设置 bars 初始值

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'}),   
        }

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