繁体   English   中英

Django模板中的if语句问题

[英]if statement in Django template issue

我正在尝试比较Django模板中的值。 如果语句不起作用,这是我的代码模型类:

class Run(models.Model):
    run_id = models.AutoField(primary_key=True)
    run_name = models.CharField(unique=True, max_length=30)
    pms_id = models.ForeignKey('ProcessManagementSystem', db_column = 'pms_id')

def __unicode__(self):
    return self.run_name 


class ProcessManagementSystem(models.Model):
    pms_id = models.AutoField(primary_key=True)
    pms_name = models.CharField(unique=True, max_length=30)

def __unicode__(self):
       return self.pms_name

我的范本

{% for run in all_runs %}
        {{run.pms_id}}
        {% if run.pms_id == "PMSName1" %}
                    {{run.pms_id}}
        {% endif %}
{% endfor %}

有趣的是,当我打印{{run.pms_id}}时,没有显示ID,而是显示pms_name(可能是因为返回了self.pms_name)

因此,在比较期间,我尝试与名称(即“ PMSName1”)而不是id进行比较,但是仍然没有运气。 有什么建议怎么比较?

谢谢

Pms_id是一个对象,因此如果要获取ID或名称,请执行以下操作:

{% if run.pms_id.pms_id == 1 %} or {% if run.pms_id.pms_name == "PMSName1" %}

Django中的ForeignKey字段不仅仅提供ID。 它为您提供了实际的相关对象。 您不应该使用_id格式,因为Django实际上是通过在字段名称中添加_id来创建基础数据库列的。 因此,您有一个名为pms_id_id的数据库列。

在模板中,对象不等于id或名称。 您可以直接访问ID字段:

{% if run.pms_id_id == whatever %}

或访问相关对象的ID:

{% if run.pms_id.pms_id == whatever %}

第一种形式的优点是它不会触发相关对象的数据库查找。 第二个优点是您可以与任何字段进行比较,例如使用run.pms_id.pms_name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM