django - 如何在 Jinja 模板中动态设置默认选择选项?
问题描述
我正在构建一个仪表板,其中将包含一些有关用户的信息。我正在尝试使用 Django 设置值以选择标签,但该值从未被分配。这是我的代码。
我的模型看起来像这样
class User(models.Model):
first_name
last_name
reg_status
我需要用reg_status
. 可以包含三个选项,reg_status
它们如下所述:
mailed
register
not register
的值reg_status
是动态的。例如,如果我reg_status = mailed
从我的视图中传入,我需要<option value='mailed'>
被选中。但是,如果我reg_status = register
从我的角度传入,我需要<option value='register'>
被选中。
这是我尝试在模板中呈现内容的方式:
{% for u in user %}
<input type='text' value={{u.first_name}}/>
<input type='text' value={{u.last_name}}/>
<select value={{u.reg_status}>
<option value='mailed'>mailed</option>
<option value='register'>register</option>
<option value='not register'>not register</option>
</select>
{% endfor %}
即使值设置为“已注册”或“未注册”,输出也会为所有实例选择“已邮寄”。
解决方案
您可以使用 Jinja 三元运算符。这有点贪婪,因为您正在执行相同的操作 3 次。您还可以考虑使用 Jinja 设置全局变量(请参阅文档,向下滚动到范围行为)。
<select value='{{ u.reg_status }}'>
<option value='mailed' {{ "selected='selected'" if u.reg_status == 'mailed' else "" }}>mailed</option>
<option value='register' {{ "selected='selected'" if u.reg_status == 'register' else "" }}>register</option>
<option value='not register' {{ "selected='selected'" if u.reg_status == 'not register' else "" }}>not register</option>
</select>
推荐阅读
- ruby - 如何使编辑和删除控制器动作起作用
- python - 试图运行 mnist.py。代码运行,但我看到的只是浏览器中的“无法连接”消息
- python - Django:django-admin.py 和 django-admin 之间的区别
- node.js - API 调用返回“超出最大调用堆栈大小”错误
- reactjs - react-dnd 使用自定义拖动层的可排序列表
- regex - 使用 powershell 解析包名和版本号
- amazon-web-services - 503 Service Temporarily Unavailable use EKS ALB Ingress
- ruby - Ruby 加载一个需要另一个 dll 的 dll
- math - 在 Qiskit 的第 1.3 节中,如何在以下复数/三角方程中找到 alpha 和 beta?
- laravel - 如果请求是获取而不是发布,如何返回?