我的问题是模板的嵌套循环...我用它来检查我的模型sitio.id_sitio
是否具有与带有外键的另一模型comprobante.id_sitio
等效的ID,然后打印A(如果有)找到结果,如果没有,则为B
条件式工作正常,但我不想多次打印嵌套循环。
如果找到一个结果,我想中断循环并仅打印HTML一次,例如<a href=""> Checkouts </a>
否则,如果结果末尾的记录中不存在,我想打印<p>No payments</p>
我不知道是否必须在views.py中编写查询,还是必须在模板中执行其他操作... 有正确的方法吗?
这是我的代码:
Models.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,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)
Template.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 %}