【发布时间】:2019-11-19 07:28:57
【问题描述】:
我的问题是我的模板的嵌套循环...我用它来检查我的模型 sitio.id_sitio 是否具有与另一个模型 comprobante.id_sitio 具有外键的等效 ID,然后如果找到一个结果并打印 A B 如果没有
条件 if 工作正常,但我不希望嵌套循环打印多次。
如果找到一个结果,我想打破循环并只打印一次 HTML,例如 <a href=""> Checkouts </a>
否则如果结果在末尾的记录中不存在我想打印<p>No payments</p>
我不知道是否必须在 views.py 中编写查询,或者是否必须在模板中执行其他操作... 有正确的方法吗?
这是我的代码:
模型.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
Views.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_id %}
<a href="">Checkouts</a>
{% else %}
<p>no payments</p>
{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
{% endblock %}
【问题讨论】:
标签: python django django-models django-templates django-views