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

问题描述 投票:0回答:2

我是初级后端开发人员。我不知道如何使用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">

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

还是不行!现在我不能把 {{ }} 没有像“something”={{ foo }}

这样的名字

现在我有 0 个想法,我可以做更多的事情来使它工作......也许 JS?但我不敢相信仅仅在 django/python 中就没有正确的方法。 ;/

python django checkbox django-forms django-templates
2个回答
14
投票

您可以使用

{% if ... %}
标签来做到这一点:

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

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


1
投票

另一种方法是使用

yesno
过滤器。

  <input name="allowed" 
         type="checkbox" {{ player.player_check |yesno:"checked," }}>

https://docs.djangoproject.com/en/4.1/ref/templates/builtins/#yesno

© www.soinside.com 2019 - 2024. All rights reserved.