首页 > 解决方案 > Django 数据库查询集无字段信息

问题描述

当我通过我的视图运行查询集并将其传递给模板时,我得到的是以下内容:

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

如何通过查询显示字段字典?

查看方法:

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 }} 只是作为概念证明存在,直到我可以让它正常工作

标签: djangodjango-modelsdjango-database

解决方案


  1. 您不能直接显示查询集,您需要在模板中对其进行迭代。
  2. 您可以使用 object.myfieldname 在模板中访问对象的字段。

示例:

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

您还可以为您的类定义一个默认的字符串方法,因为您可以看到 djangoChangeLog 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 %}

推荐阅读