对于“ query_set_list”中的“ model_object”,显示为空。 Django 1.11

时间:2018-08-31 14:49:15

标签: python django django-models django-templates django-views

我开始使用Django,但在使用query_sets和for循环时遇到了一些麻烦。

我创建了一个模型,并在数据库中填充了一些条目。在views.py中,我已将这些条目的计数发送到模板中,并且可以HTML格式查看结果。

但是,当我发送这些条目的query_set列表时,我似乎无法访问它们,并且不确定原因。

这是view.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render
from website.models import Member
# Create your views here.

def index(request):
    """ View for the homepage of the site """
    num_mem = Member.objects.count()
    mem_list = list(Member.objects.all())
    context = {
            'mem_list': mem_list,
            'num_mem' : num_mem,
    }

    #render the HTML template index.html with the data
    return render(request, 'index.html', context=context)

在index.html中,我尝试这样访问它们。

{% extends "base_generic.html" %}

{% block content %}
    {{ num_mem }}
    {% for member in mem_list %}
        There are Members!
    {% empty %}
        Sorry can't find the members =/
    {% endfor %}
{% endblock %}

返回的结果如图所示。

“ 6对不起,找不到成员= /”

所以我可以看到num_mem值,并且可以看到当前有6个值。

意图是遍历成员列表,并对每个值进行操作,例如

<a href='{{member.m_name.contact_email}}'> Contact {{member.m_name}} here...</a>

编辑:我已按照建议更改了mem_list,但这并不能解决问题。

更新的代码。

mem_list = Member.objects.all()

我正在使用Django 1.11和Python 2.7.5,在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

请勿将Member.objects.all转换为列表。它必须返回一个QuerySet而不是一个列表。

因此从

删除列表

mem_list = list(Member.objects.all())

它必须是

mem_list = Member.objects.all()