Django for loop на html не может получить все поля данных для своих object_lists

Почему в моем файле output.htm, когда я использую теги шаблона django "for loop" для получения данных по {{ post.firstname }}, а также {{ post.surname }}, он не показывает никакого результата? Надеюсь на помощь. Заранее спасибо.

Ps: приведенный ниже код - это только часть работы. Это означает, что я не выписывал библиотеки python, полный html для нижеприведенного кода.

#views.py

class Student_list(View):
    def get(self, request):
        posts = Student.objects.all().values_list("firstname", "surname").union(Teacher.objects.all().values_list("firstname", "surname"))
        """raw sql => SELECT * FROM l2_OR_queries_student WHERE surname LIKE 'bald%' OR surname LIKE 'aus%' """
        return render(request, "l4_UNION_queries/output.htm", context = {"posts": posts})
<!--output.htm -->

    <table>
        <tr>
            <th>First Name</th>
            <th>Surname</th>
        </tr>

        {% for post in posts %}
        <tr>
            <td>{{ post.firstname }}</td>
            <td>{{ post.surname }}</td>
        </tr>
        {% endfor %}
    </table>
student.sqlite3

id  firstname   surname age classroom   teacher
4   shaina  austin  20  1   trellany
5   raquel  avery-parker    21  2   robin
6   lakisha baldwin 20  3   crystal


teacher.sqlite3
id  firstname   surname
9   trellany    abraham
10  robin   adkins
11  crystal allen
12  shaina  young

У вас проблема с HTML-файлом. Поскольку у вас в наборе запросов есть заархивированные данные, поэтому текущая реализация не будет работать

Попробуйте это:

<table>
    <tr>
        <th>First Name</th>
        <th>Surname</th>
    </tr>

    {% for firstname, surname in posts %}
    <tr>
        <td>{{ firstname }}</td>
        <td>{{ surname }}</td>
    </tr>
    {% endfor %}
</table>

Если вы хотите использовать ваш текущий HTML, то вы должны изменить следующий код

posts = Student.objects.all().values_list("firstname", "surname").union(Teacher.objects.all().values_list("firstname", "surname"))

Должно быть

posts = Student.objects.all().values("firstname", "surname").union(Teacher.objects.all().values("firstname", "surname"))
 posts = Student.objects.all().values("firstname", "surname").union(Teacher.objects.all().values("firstname", "surname"))

Вам необходимо использовать values() вместо values_list(), потому что values_list() возвращает объекты в виде списка. Для доступа к ним по ключам просто используйте values().

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