如何通过复选框更新布尔字段 Django

时间:2021-06-14 09:21:20

标签: html django forms django-templates

我在表单上有一个布尔字段,我可以通过模板填写。但后来我想更新(修改)那个布尔值,但我太缺乏经验,不知道如何。

我的模型(它有更多的字段,但我不想让它变得更长):

class Orden(models.Model):
    elac = models.BooleanField(default=False)

填充模板(这个很好用):

<div class="card card-body">
    <div class="form-group row">
        <table class="table table-striped table-bordered table-sm" width=100%>
            <tr>
                <td class="text-center">
                    <h5>E.A.</h5>
                </td>
            </tr>
            <tr>
                <td class="text-center">
                    {{orden.elac}}
                </td>
            </tr>
        </table>
    </div>
</div>

保存视图:

def ordenfill(request, client_id):
    if request.method == 'POST':
        orden = ordenForm(request.POST)
        if orden.is_valid():

            orden.instance.client_id = client_id
            init = orden.save()
            return redirect('ordenview', id=init.id)
    else:
        orden = ordenForm()

    client = Cliente.objects.get(id=client_id)

    context = {
        'orden': orden,
        'client': client,
    }

    return render(request, 'ordenfill.html', context)

更新模板(我不知道怎么做的)

<div class="form-group row">
    <div class="form-group row">
        <label class="col-sm-2 col-form-label">0.8</label>
            <div class="col-sm-4">
                <input type="checkbox"  class="form-check-input" name="elac" 
                    value = "{{orden.elac}}"/>
            </div>
    </div>
</div>

和更新视图:

def ordenupd(request, id):
    orden = Orden.objects.get(id=id)
    context = {
        'orden': orden,    
    }

    return render(request, "ordenupd.html", context)

现在,我现在遇到的问题是我不知道如何将布尔字段链接到第二个模板上的复选框,以便它呈现布尔值的当前值并允许我立即修改它这就是我得到的:

Render of the second template

无论布尔值的当前值如何,我总是得到相同的渲染,并且显然它不允许我更新表单。

0 个答案:

没有答案