Django: получать данные из таблиц и отображать их вместе с помощью ListView - PullRequest
1 голос
/ 09 июня 2019

Я хочу отобразить данные из 2 таблиц (и больше в будущем), но что-то не работает в моем коде.

my 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 %}

Итак, отображение пользователей работает без каких-либо проблем, но не может отображать что-либо из электронных писем, но если я делаю это в оболочке, все работает хорошо

1 Ответ

1 голос
/ 09 июня 2019

A ListView [Django-doc] предназначен для отображения только одного набора запросов одновременно.Если вам нужно передать дополнительные наборы запросов, вы можете переопределить метод get_context_data(..) [Django-doc] :

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

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

Здесь мы, таким образом, передаем дополнительную переменнуюemails к шаблону рендеринга.Однако обратите внимание, что этот набор запросов не будет разбит на страницы (или, по крайней мере, без добавления нумерации страниц самостоятельно).

my models.py:

Обратите внимание, что это просмотров , вам нужно записать их в views.py.

...