Короткое условие if для цикла в шаблоне Django - PullRequest
0 голосов
/ 14 мая 2019

Как я могу перечислить все телефонные номера в td , назначенные данному человеку с внешним ключом в однострочном отчете?

telefony_list, osoby_list и email_list содержит все объекты, выдвинутые из универсального ListView.

<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>

РЕДАКТИРОВАТЬ:

Я только что решил эту проблему с

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

Но как я могу разделить тел.телефон строки?Теперь они связаны между собой без пробелов, и я должен показать им, что они находятся друг под другом в одном тд

Фактически: Actual result

Ожидаемое: enter image description here

Мои модели.py:

from django.db import models

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)


class Telefon(models.Model):
    osoba = models.ForeignKey(Osoba, on_delete=models.CASCADE, editable=False)
    telefon = models.CharField(max_length=50)

    def __str__(self):
        return self.telefon


class Email(models.Model):
    osoba = models.ForeignKey(Osoba, on_delete=models.CASCADE, editable=False)
    email = models.EmailField(max_length=100)

1 Ответ

0 голосов
/ 14 мая 2019

@ 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...