django - 如何根据 if 条件更改模板中的数据级类?
问题描述
在这里,我想根据技能状态更改模板中的数据级别。我正在迭代模板中的技能对象,如果第一个条件匹配,那么在所有技能中,第一个数据级值适用,但不检查其他条件。
如何根据每个技能状态更改数据级值?
楷模
class Skill(models.Model):
status = (
(0, 'Beginner'),
(1, 'Good'),
(2, 'Expert'),
(3, 'Pro'),
)
name = models.CharField(max_length=255)
status = models.IntegerField(choices=status)
意见
skills = Skill.objects.order_by('-status')
data_level = 0
for skill in skills:
print(skill.status)
if skill.status == 0:
data_level = 20
if skill.status == 1:
data_level = 45
if skill.status == 2:
data_level = 70
if skill.status == 3:
data_level = 9
context = {
'skills': skills,
'data_level':data_level}
模板
{% for skill in skills %}
<div class="item">
<h3 class="level-title">{{skill.name}}</h3>
<div class="level-bar-inner"
data-level="{{data_level}}%">
</div>
{% endfor %}
解决方案
您可以在Skill
对象中创建一个属性,例如:
skill_to_data_level = {
0: 20,
1: 45,
2: 70,
3: 9
}
class Skill(models.Model):
status = (
(0, 'Beginner'),
(1, 'Good'),
(2, 'Expert'),
(3, 'Pro'),
)
name = models.CharField(max_length=255)
status = models.IntegerField(choices=status)
@property
def data_level(self):
return skill_to_data_level.get(self.status)
然后你可以在模板中渲染它:
{% for skill in skills %}
<div class="item">
<h3 class="level-title">{{ skill.name }}</h3>
<div class="level-bar-inner" data-level="{{ skill.data_level }}%"></div>
{% endfor %}
推荐阅读
- kubernetes - 如何配置 Spring Cloud Data Flow 以在每个任务的单独命名空间中执行任务?
- django - TypeError:包含代理模型“TokenProxy”不允许的模型字段的抽象基类。尝试在 Django 中进行迁移时
- javascript - 根据 React 组件中的键/值字典映射所有链接
- node.js - Discord Bot 随机回复
- python - 通用详细视图 UserProfileDetailView 必须使用对象 pk 或 URLconf 中的 slug 调用
- linux - 如何通过 Pod 的启动脚本导出环境变量
- bootstrap-4 - 如何使用 Bootstrap 4.5.0 在 JHipster 6.10.3 中创建 Jumbotron
- html - jQuery Slick 轮播布局不适用于移动布局
- assembly - 16 位(4 位)BCD 加法 (TASM 8086)
- javascript - Angular test when a function is called when activated route has params