Django:从表中获取数据并使用ListView一起显示

时间:2019-06-09 14:09:51

标签: django django-orm

我想显示2个表中的数据(将来还会显示更多),但是我的代码中没有任何内容。

我的 views.py:

**imports**
def home(request):
    context = {'users': Person.object.all(),
               'emails': Email.object.all()
              }
    return render(request,'app/home.html',context)

class PersonListView(ListView):
    model = Person
    template_name = 'app/home.html'
    context_object_name = 'users'

和我的 home.html

{% extends "app/base.html" %}
{% block content %}
    {% for user in users %}
    Displaying user attributes works fine
    {% endfor %}

Here should be emails
{% for email in emails %}
    This displaying doesnt work
{% endfor %}
{% endbock content %}

因此,显示用户没有任何问题,但是无法显示电子邮件中的任何内容,但是如果我在shell中进行操作,一切都会很好

1 个答案:

答案 0 :(得分:1)

ListView [Django-doc]旨在一次仅显示一个查询集。如果您需要传递额外的查询集,则可以覆盖get_context_data(..) method [Django-doc]

class PersonListView(ListView):
    model = Person
    template_name = 'app/home.html'
    context_object_name = 'users'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context.update(emails=Email.objects.all())
        return context

因此,我们在此处将一个额外的变量emails传递给模板呈现引擎。但是请注意,此查询集不会被分页(或至少不会自己添加一些分页)。

  

我的 models.py

请注意,这些是视图,您需要在views.py中编写这些视图。