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:那也可以:) 但它的可扩展性较差。如果您稍后将其他属性添加到<input>
标记,则意味着您需要指定两次(甚至更多次)。以上是关于Django模板 - 如果object.val == true,则设置复选框的主要内容,如果未能解决你的问题,请参考以下文章
Django 模板 - 检查字段中是不是有值,如果 ManyToManyField 则为空
如果使用通用视图,是不是需要在 django 模板表单中填写动作属性