База данных Django Queryset Нет информации о полях - PullRequest
0 голосов
/ 26 июня 2018

Когда я запускаю набор запросов через свои представления и передаю его в шаблон, все, что я получаю, это следующее:

<QuerySet [<ChangeLog: ChangeLog object (1)>, <ChangeLog: ChangeLog object (2)>, <ChangeLog: ChangeLog object (3)>, <ChangeLog: ChangeLog object (4)>, <ChangeLog: ChangeLog object (5)>, <ChangeLog: ChangeLog object (6)>, <ChangeLog: ChangeLog object (7)>, <ChangeLog: ChangeLog object (8)>, <ChangeLog: ChangeLog object (9)>, <ChangeLog: ChangeLog object (10)>, <ChangeLog: ChangeLog object (11)>]

Как мне показать словарь полей в моем запросе?

Метод views:

def changeres(request):
    if request.user.is_authenticated:
            name = request.session.get('name')
            data = ChangeLog.objects.all()
            return render(request, 'changeres.html', {'data':  data})

Шаблон:

{% extends "universal/header.html" %}
{% block content %}
<main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4">
<div class="forms-content">
    <div class="tab-content" id="pills-tabContent">
            <p></p>
            <img class="mb-4" src="/static/FWIcon.png" alt="" width="100" height="100">
            <p></p>
            <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab">
                            <form action="/change/action/" method="POST">
                            <p class="formtitle">Change Lookup</p>
                            <p></p>
                                    {% csrf_token %}
                                    <div class="form-group">
                                    <label class="fieldtitle"> Search Results </label>
                                    <table class="table">
                                    {{ data }}
                                    <thead>
                                    <th scope="col">a</th>
                                    <th scope="col">b</th>
                                    <th scope="col">c</th>
                                    <th scope="col">d</th>
                                    </thead>
                                    </table>
                                    </div>
                    <a href="/change/" class="btn btn-primary" >Submit</a>
            </form>
            </div>
    </div>
</div>
</main>
{% endblock %}

{{data}} является лишь доказательством концепции, пока я не смогу заставить ее работать должным образом

1 Ответ

0 голосов
/ 26 июня 2018
  1. Вы не можете отобразить набор запросов напрямую, вам нужно повторить его в своем шаблоне.
  2. Вы можете получить доступ к полям вашего объекта в своем шаблоне, используя object.myfieldname.

Пример:

{% for item in data %}
   <p>item.one_of_my_fields</p>
{% endfor %}

Вы также можете определить строковый метод по умолчанию для вашего класса, так как вы можете видеть, что django возвращает ChangeLog object (1) по умолчанию.

Пример:

class Genre(models.Model):

    name = models.CharField(max_length=30, unique=True)

    def __str__(self):
        return self.name

Теперь я могу вызывать свой объект прямо в шаблоне, и он будет возвращать название жанра.

{% for item in data %}
    <p>item</p>
{% endfor %}
...