标签如果在模板django中

时间:2015-05-14 18:58:21

标签: python django

工作代码:

  {% if request.user.manager.position != 'E' %}
      {% endif %}

models.py

Position_choices = (('M', u'Manager'), ('E', u'Staff'), ('U', u'Other_staff'))
class Manager(models.Model):
...
    position = models.CharField(max_length=1, choices=Position_choices, default='M')

models.py for proj

class Project(models.Model):
    manager = models.ForeignKey(Manager, blank=True, null=True, related_name='manager_set')
    Other_staff = models.ForeignKey(Manager, blank=True, null=True, related_name='staff_set')
    Staff= models.ForeignKey(Manager, blank=True, null=True, related_name='otherstaff_set')

我在页面html上显示一些块,具体取决于员工的位置。但过去只有一名员工,但现在他们是2.我试着:

 {% if request.user.manager.position in ['E', 'U'] %}

结果:

Could not parse the remainder: '['E',' from '['E','

请帮助您正确查询。

3 个答案:

答案 0 :(得分:3)

Django模板不支持列表文字,我想说最简单的方法是将列表['E', 'U']作为变量传递,然后执行:

{% if request.user.manager.position in allowed_positions %}

答案 1 :(得分:1)

相关的上一个问题:Checking if something exists in items of list variable in Django template

有两种方法可以解决问题:

  1. 在Python后端创建选项列表并将其传递给上下文进行比较:
  2.   

    {%if request.user.manager.position in request.positive_list%}

    1. 使用OR:
    2. 拆分条件
      {% if request.user.manager.position == 'E' | request.user.manager.position == 'U' %}
      

答案 2 :(得分:-1)

尝试将带有valid位置的列表作为变量发送到模板。您不能直接在模板中“定义”列表。