【问题标题】:Django DetailView - display boolean from models as checkboxesDjango DetailView - 将模型中的布尔值显示为复选框
【发布时间】:2021-10-05 04:19:42
【问题描述】:

有许多 sn-ps 可以在 Django 表单中将布尔值显示为复选框(即将 Checkbox 指定为小部件)。例如(假设在模型中为 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>

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

【问题讨论】:

    标签: django checkbox detailview


    【解决方案1】:

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

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

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

    【讨论】:

    • 所以如果我理解正确 - 即使我使用的是类 FooDetail(DetailView),我仍然可以实例化我的 FooForm(我在其中设置了我想要的复选框),并设置它值到模型中的任何条形值。然后我将它传递给我的模板(例如 get_context_data)。然后在我的模板中,我只是 {{ form.bar }} 而不是我在上面发布的内容。我想我必须制作第二个表格(因为对于实际表格,我确实希望启用 bar)但确实可以。
    猜你喜欢
    • 2012-05-25
    • 2021-03-08
    • 1970-01-01
    • 2010-11-05
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 2012-01-07
    相关资源
    最近更新 更多