[英]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.