如何询问table1.id==table2.id?

2024-04-27 17:07:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想确定table1.id\u sitio和table2.id\u sitio在模板中是否相同。如果不是这样的话,B

我想如果我的句子错了。。。 这是我第一次试穿Django,所以我可能错过了什么

这就是我所尝试的和我的代码:

型号.py

class Comprobante(models.Model):
        id_sitio = models.ForeignKey('Sitio', models.DO_NOTHING, db_column='id_sitio', blank=True, null=True)

class Sitio(models.Model):
        id_sitio = models.IntegerField(primary_key=True)
        sitio = models.CharField(max_length=100, blank=True, null=True)

        def __str__(self):
            return self.sitio

视图.py

def topsitios(request):
    sitio = Sitio.objects.all()[0:100]
    comprobante = Comprobante.objects.all()[0:100]

    context = {'sitio': sitio, 'comprobante': comprobante}

    return render(request, "sitio_ptc/topsitios.html", context)

模板.html

{% block content %}

{% for s in sitio %}
<tr>
<th scope="row">  {{ forloop.counter }}</th>
<td> {{ s.sitio }} </td>

<td>
{% for c in comprobante %}
{% if s.id_sitio == c.id_sitio %}
comprobante ok
{% else %}
no payments
{% endif %}
{% endfor %}
</td> 

</tr> 
{% endfor %}
{% endblock %}

Tags: py模板idtruemodelmodelsdefnull
1条回答
网友
1楼 · 发布于 2024-04-27 17:07:24

对象的id_sitioForeignKey。这意味着c.id_sitio不是相关对象的主键的值,而是Sitio对象

您可以通过以下方式进行检查:

{% if s.id_sitio == c.id_sitio_id %}
  comprobante ok
{% else %}
  no payments
{% endif %}

注意,通常ForeignKey没有前缀或后缀,因为Django会自动添加一个带有_id后缀的字段,该后缀包含它所引用对象的主键的值

但是,由于创建了嵌套的for循环,模板将多次打印no payment

相关问题 更多 >