问题描述
有许多代码段可以将 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'}),}
或查找并使用任何模板过滤器向表单字段添加属性