Django模板 - 如果object.val == true,则设置复选框

Posted

技术标签:

【中文标题】Django模板 - 如果object.val == true,则设置复选框【英文标题】:Django template - set checkbox checked if object.val == true 【发布时间】:2018-12-21 13:36:57 【问题描述】:

我是初级后端开发人员。我不知道怎么用JS。

我无法设置

<input type="checkbox" name="player_check"> 

真的... 或反向我无法设置

<input type="checkbox" name="player_check" checked>

假的。

我的代码:

<table id="some_table">
    <thead>
    <tr>
        <th>Prepared</th>
    </tr>
    </thead>
    <tbody>
    % for player in players %
        <tr>
            <td>
                <input type="checkbox" name="player_check">
            </td>
        </tr>
    % endfor %
    </tbody>
</table>

假设在“玩家”中我有 5 个玩家,每个玩家都有一个值“player_check”。

其中两个有:

player.player_check = True

休息:

player.player_check = False

我正在尝试使用 或 % %

在表格中使用这些值启动复选框

我试过了:

<input type="checkbox" name="player_check" value=1>
<input type="checkbox" name="player_check" value="1">
<input type="checkbox" name="player_check" value="True">
<input type="checkbox" name="player_check" value=True>
<input type="checkbox" name="player_check" value="checked">

没有任何效果... 然后我发现复选框有一个参数被选中:

<input type="checkbox" name="player_check" checked> 

没关系,但是...现在我无法关闭它:

<input type="checkbox" name="player_check" checked="false">
<input type="checkbox" name="player_check" checked="0">
<input type="checkbox" name="player_check" checked=0>
<input type="checkbox" name="player_check" checked="unchecked">

所以我决定在 python 代码中使用 django 模板 + 更改: 现在 player.player_check 等于选中或未选中

还是不行!现在我不能把 没有像 "something"= foo

这样的名字

现在我有 0 个想法,我可以做些什么来让它发挥作用……也许是 JS?但我不敢相信仅在 django/python 中没有正确的方法。 ;/

【问题讨论】:

您不使用 Django 表单的原因是什么,它会为您解决这个问题? 这是我公司的旧项目,它是这样制作的。我负责这个项目,主要是我在后端 API 中学习和做员工,但有时需要在前端制作一些东西,现在它有点让我丧命:P,再过几周,我希望那种容易不会出现问题感谢您的回答;) 【参考方案1】:

您可以使用例如% if ... % 标签来做到这一点:

% for player in players %
<tr>
  <td>
  <input type="checkbox" name="player_check"% if player.player_check % checked% endif %>
  </td>
</tr>
% endfor %

但我认为你最好使用 Django 表单,它会以更优雅的方式为你处理这个问题:你指定表单字段,其余的由 Django 处理。

【讨论】:

谢谢!在您回答之前几分钟,我发现了如何执行此操作,但是您的建议要好得多,我使用了 if 语句,其中一个复选框关闭,否则我为第二个复选框编写了代码。现在我必须改变它;)谢谢你的回答! @AdrianKurzeja:那也可以:) 但它的可扩展性较差。如果您稍后将其他属性添加到 &lt;input&gt; 标记,则意味着您需要指定两次(甚至更多次)。

以上是关于Django模板 - 如果object.val == true,则设置复选框的主要内容,如果未能解决你的问题,请参考以下文章

Django模板如果没有按预期工作

Django 模板 - 检查字段中是不是有值,如果 ManyToManyField 则为空

如果使用通用视图,是不是需要在 django 模板表单中填写动作属性

如果仅在模板中立即给出错误输入,如何在 Django 模板中显示表单错误?

如果 django 模板中的条件不起作用

如果对象存在,Django过滤并显示在模板中