我试图比较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 %}
有趣的是当我打印的时候{{运行.pms\u id}},它没有显示ID,而是显示pms\U名称(可能是因为返回)self.pms\u名称)你知道吗
因此,在比较过程中,我试图用名称(即“PMSName1”)而不是id进行比较,但仍然没有运气。 有什么比较的建议吗?你知道吗
谢谢
Django中的ForeignKey字段并不是简单地给出ID,而是给出实际的相关对象。您不应该使用
_id
格式,因为Django实际上是通过在字段名中添加_id
来创建基础数据库列的。因此,您有一个名为pms_id_id
的db列。你知道吗在模板中,对象不等于id或名称。您可以直接访问ID字段:
或访问相关对象的id:
第一种形式的优点是它不会触发对相关对象的db查找;第二种形式的优点是可以与任何字段进行比较,例如使用
run.pms_id.pms_name
。你知道吗Pms_id
是一个对象,因此如果要获取id或名称,请执行以下操作:相关问题 更多 >
编程相关推荐