Попытка вывести данные, но не отображается в шаблоне - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь передать данные в шаблон, но он не отображается

<div id="table">
    <table id="table_id">
        <thead>
            <tr>
                 <th>Name</th>
            </tr>
        </thead>
        <tbody>
        {% for key, value in users.items %}
            <tr>
                 <td>{{ key }}{{ value }}</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
  </div>

, и это представление

@login_required
    def event_detail(request, pk):
        messages = Chat.objects.filter(room=pk)
        users = Chat.objects.filter(room=pk).values('user__username').distinct()
        event_users = Event.objects.filter(id=pk)
        response_data = {
            'messages': messages,
            'pk': pk,
            'users': users
        }
        return render(request, 'chat/event_detail.html', response_data)

Моя таблица не показывает данные.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

users не диктат, это QuerySet.

{% for user_values in users %}
    <tr>
         {% for key, value in user_values.items %}
             <td>{{ key }}: {{ value }}</td>
         {% endfor %}
    </tr>
{% endfor %}

Редактировать:

Я изменил его, чтобы поддержать использование .values().Однако, если у вас нет веских причин для этого, я бы рекомендовал использовать ORM, .select_related('user') и экземпляры модели, а не .values().Простота может перевесить производительность.

Редактировать 2:

Если вам нужен список имен пользователей, вы можете сделать это:

usernames = Chat.objects.filter(room=pk).values_list('user__username', flat=True).distinct()

Это будет намного чище и все равно делать то, чтовы изначально хотели.Просто назовите переменную, чтобы указать, что это только имена пользователей.

0 голосов
/ 24 апреля 2019

Вы отправите набор запросов в шаблоне.Вы можете попробовать это

{% for value in users %}
     <tr>
           <td>{{ value.user__username }}</td>
     </tr>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...