在Django中比较HTML中的两个变量

时间:2019-06-12 17:28:23

标签: django python-3.x django-templates

这是我的 HTML代码

{% for divida in Contrato %}
    {% for empresa in Empresa %}
        <li> 
            {{empresa.cnpj}} | {{divida.cnpj}}  |
            {% if empresa.cnpj == divida.cnpj %}
             True
            {% else %}
             False
            {% endif %}
        </li>
    {% endfor %}
{% endfor %}

这是我的结果

1. 52136308000162 | 72718870000101 | False
2. 05574445000107 | 72718870000101 | False
3. 72718870000101 | 72718870000101 | False
4. 52136308000162 | 05574445000107 | False
5. 05574445000107 | 05574445000107 | False
6. 72718870000101 | 05574445000107 | False
7. 52136308000162 | 52136308000162 | False
8. 05574445000107 | 52136308000162 | False
9. 72718870000101 | 52136308000162 | False

第3、5和7行应为True。

我想念什么?

Empresa模型:

class Empresa(models.Model):
    cnpj = models.CharField(max_length=14, primary_key=True)    

    def __str__(self):
    return self.cnpj

Contrato模型:

class Contrato(models.Model):
    contrato = models.CharField(max_length=150, null=False)
    cnpj = models.ForeignKey('users_c2p.Empresa', on_delete=models.PROTECT, null=False)

1 个答案:

答案 0 :(得分:0)

这两个值永远不会相等。一个是字符串,另一个是Empresa对象。

您可以通过与相关对象上的相关字段进行比较来解决此问题:

{% if empresa.cnpj == divida.cnpj.cnpj %}

但我根本不明白您为什么这样做。获取与Contrado相关的Empresa对象的方法是完全完成您已经做的事情:divida.cnpj。无需单独遍历所有Empresas,直到找到与您已有的Empresas相匹配的东西。