如何在 django 模板的 forloop 中访问 If 语句中的元组值?

Posted

技术标签:

【中文标题】如何在 django 模板的 forloop 中访问 If 语句中的元组值?【英文标题】:How to access to tuple values in a If Statement inside a forloop in django templates? 【发布时间】:2016-02-04 08:55:43 【问题描述】:

我正在做一个待办事项应用程序,我有一个表单,其中一个字段是一个选择字段,您可以在 3 个 item_importance(重要、正常和不太重要)之间进行选择

在模板中,我想根据项目的重要性更改标签的颜色。问题是我想访问模板中的元组值,但我不知道如何。

模型.py:

item_importance = (
                  ('Important', 'Important'),
                  ('Normal', 'Normal'),
                  ('Less Important', 'Less Important')
                   )
class Item(models.Model):
     ...code...
     item_importance = models.CharField(max_length=25, choices=item_importance)

Form.py:

 class CreateItemForm(forms.ModelForm):
     description = forms.CharField(widget=forms.Textarea(attrs='rows': 3, 'cols': 85), max_length=200)
     deadline_date = forms.DateField(widget=forms.TextInput(attrs=   'type': 'date'))
 class Meta:
    model = Item
    fields = ["title", "description","item_importance", "deadline_date" ]

模板: 这里 if 语句是错误的,我想根据 de 标签的颜色访问元组的值。

% for item in queryset %
...code...
        <div class="panel-body">
            <div class="row">
                <div class="col-md-6">
                    <textarea class="form-control" rows="4" style="background-color:white; resize: none" readonly> item.description </textarea>
                </div>
                <div class="col-md-6">

                % if item_importance == Important % #How do I access the value 'Important' of the tuple here? 
                    Importancia: <span class="label label-danger">  item.item_importance </span>
                % elif item_importance == Normal % ##How do I access the value 'Normal' of the tuple here? 
                    Importancia: <span class="label label-warning">  item.item_importance </span>
                % else %
                    Importancia: <span class="label label-success">  item.item_importance </span>
                % endif %
                    % endfor %
                    <p> Deadline: <strong> item.deadline_date </strong> ( item.deadline_date|timeuntil )</p>

                </div>

            </div>
        </div>
    </div>
 </div>
</div>% endfor %   

【问题讨论】:

【参考方案1】:

问题是item_importance 的类型是str,而您将它与未定义的名称进行比较。另外,您需要在当前循环迭代的item 对象上查找属性item_importance

你应该这样做

% if item.item_importance == 'Important' %
...
% elif item.item_importance == 'Normal' %
...
% else %
...
% endif %

【讨论】:

以上是关于如何在 django 模板的 forloop 中访问 If 语句中的元组值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django 模板的 forloop 中访问 If 语句中的元组值?

如何在 django 模板中使用嵌套的 forloop 生成表时对 t 行进行编号

如何使用 forloop.counter0 作为 Django 模板中的键

django-模板变量forloop

在django模板中对forloop.counter进行加法操作

模板中的 Django forloop