我有3个模型,它们被外键引用,我需要使用一些过滤器显示所有OrderDetails数据的报告。
我还需要包括OrderEntry的日期和Inventory条目的日期。但是当我尝试渲染3个查询集时,日期重复(n)次。
如何限制只打印循环中的第一个或最后一个匹配?
models.py
class OEntradaDetalle(models.Model):
oentrada = models.ForeignKey(OEntrada, related_name='orden')
...
class RecepcionOEntrada(models.Model):
oentradadetalle = models.ForeignKey(OEntradaDetalle, related_name='recepciones')
folio = models.CharField(max_length=20)
fecha = models.DateTimeField(auto_now_add=True)
...
class InventarioEntrada(models.Model):
cantidad = models.DecimalField(default=0, decimal_places=2, max_digits=10)
epc = models.CharField(max_length=25, null=True, blank=True)
fecha = models.DateTimeField(auto_now_add=True)
oentrada = models.ForeignKey('OEntrada', blank=True, null=True)
...
views.py
detalles = OEntradaDetalle.objects.filter(oentrada=oentrada)
recibidos = RecepcionOEntrada.objects.filter(oentradadetalle__in=detalles)
inventario = InventarioEntrada.objects.filter(oentrada=oentrada)
return render(request, 'reporteOEFolio.html', locals())
模板reporteOEFolio.html
{% for d in detalles %}
<tr>
<td>{{ d.epc }}</td>
...
<td>{% for r in recibidos %}{% if r.oentradadetalle == d %}}{{ r.fecha|date:"SHORT_DATE_FORMAT" }}{% endif %}{% endfor %}</td>
<td>{% for r in recibidos %}{% if r.oentradadetalle == d %}{{ r.fecha|time:"H:i:s" }}{% endif %}{% endfor %}</td>
<td>{% for r in recibidos %}{% if r.oentradadetalle == d %}{{ r.folio }}{% endif %}{% endfor %}</td>
<td>{% for i in inventario %}{% if i.epc == d.epc %}{{ i.fecha|date:"SHORT_DATE_FORMAT" }}{% endif %}{% endfor %}</td>
<td>{% for i in inventario %}{% if i.epc == d.epc %}{{ i.fecha|time:"H:i:s" }}{% endif %}{% endfor %}</td>
</tr>
{% empty %}
我实际上要做的是首先打印OEntradaDetalle对象的数据,然后使用for循环我正在寻找匹配然后打印该值。但是如果该值在查询集中多次,则会打印多次匹配。
有没有办法只打印第一场比赛?比如break
?
有没有办法只打印最后一场比赛?喜欢覆盖价值?
可能但不重复: django print loop value only once或django print only one value in for loop in template
答案 0 :(得分:0)
这个问题有几种可能的答案。最简单的是,您可以在查询集中引用单个项目:
qset[0]
如果您的查询集返回多个相同的值,则可以将其压缩:
qset.distinct()
最后,如果你想迭代&#34;很多&#34;关系的一面,但参考一个&#34;一个&#34;您可以使用templatetag重新组合效果良好:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#regroup