Как просмотреть данные в представлении Django Template?

Я пытаюсь отобразить данные из модели HealthStats в своем шаблоне, однако я могу вывести их только через поле пользователя. Я добавил в шаблон другие поля, но они не отображаются. Я также хотел бы иметь возможность фильтровать вывод, чтобы показывать только записи зарегистрированного пользователя.

Models.py

class HealthStats(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateField(auto_now=True)
    weight = models.DecimalField(max_digits=5, decimal_places=2)
    run_distance = models.IntegerField(default=5)
    run_time = models.TimeField()

    class Meta:
        db_table = 'health_stats'
        ordering = ['-date']

    def __str__(self):
        return f"{self.user} | {self.date}"

Views.py:

class HealthHistory(generic.TemplateView):
    model = HealthStats
    template_name = 'health_hub_history.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['stats'] = HealthStats.objects.all()
        return context

health_hub_history.html

{% extends 'base.html' %}
{% load static %}

{% block content %}
<div class="container-fluid">
    <div class="row">
        <div class="col-sm-12 text-center">
            <h1>My Health History</h1>
        </div>
    </div>
</div>
<div class="container-fluid">
    <div class="row justify-content-center">
        <div class="col-auto text-center p-3">
            <table class="table table-striped table-hover table-bordered">
                <tr>
                    <td>User:</td>
                    <td>Weight (lbs):</td>
                    <td>Date:</td>
                    <td>Run Distance (km):</td>
                    <td>Run Time (HH:MM:SS):</td>
                </tr>
                {% for stat in stats %}
                <tr>
                    <td>{{ user }}</td>
                    <td>{{ weight }} </td>
                    <td>{{ date }}</td>
                    <td>{{ run_distance }}</td>
                    <td>{{ run_time }}</td>
                </tr>
                {% endfor %}
            </table>
        </div>
    </div>
</div>
{% endblock content %}

Любая помощь будет принята с благодарностью!

В вашем шаблоне сделайте следующее:

                {% for stat in stats %}
                <tr>
                    <td>{{stat.user}}</td>
                    <td>{{stat.weight}} </td>
                    <td>{{stat.date}}</td>
                    <td>{{stat.run_distance}}</td>
                    <td>{{stat.run_time}}</td>
                </tr>
                {% endfor %}

надеюсь, что получится

Вернуться на верх