django模板中if condition和for循环的缩写

时间:2019-05-14 06:07:05

标签: python django

如何在单行对帐单中用外键列出 td 中分配给给定人的所有电话号码?

from itertools import chain from collections import Counter lst = ['AA', 'BB', 'CC'] Counter(chain.from_iterable(lst)) # Counter({'A': 2, 'B': 2, 'C': 2}) telefony_listosoby_list包含从通用ListView推送的所有对象。

email_list

编辑:

我刚刚用

解决了这个问题
<tbody>
    {% for osoba in osoby_list %}
    <tr>
        <td>{{osoba.id}}</td>
        <td>{{osoba.imie}}</td>
        <td>{{osoba.nazwisko}}</td>
        <td>{% tel.telefon for tel in telefony_list if tel.osoba_id == osoba.id %}{% endfor %}{% endif %}</td>
   </tr>
</tbody>

但是如何分割 tel.telefon 字符串?现在它们已经被链接在一起,没有空格了,我必须在一个 td

中显示它们彼此之间的位置。

实际:Actual result

预期:enter image description here

我的模型。py:

  {% for tel in telefony_list %}
    {% if tel.osoba_id == osoba.id %}
      {{tel.telefon}}
    {% endif %}
  {% endfor %}
</td>

1 个答案:

答案 0 :(得分:0)

@RadosławHryniewicki:首先-在代码中始终使用英文名称。

这是应该起作用的代码:

class Osoba(models.Model):
    imie = models.CharField(max_length=40)
    nazwisko = models.CharField(max_length=50)

    def __str__(self):
        return "%s %s" % (self.imie, self.nazwisko)

    @property
    def phones(self):
        return list(Telefon.objects.filter(osoba=self).values_list('telefon', flat=True))


# use in your template:
#    
# {% autoescape off %}   
# {{ osoba.phones|join:"<br />" }}
# {% endautoescape %}