如何在Django的基于类的通用视图中将多个对象作为上下文传递给模板?

时间:2019-04-04 09:18:49

标签: django django-class-based-views

我需要将两个不同的对象传递给我的模板,我试图传递但它仅显示一个。

我试图将其作为dict传递,但是我被卡住了,然后我选择了这种方法,这也导致仅从第一个对象获取数据。

在我使用的模板标签中

views.py

class ShowTable(ListView):
    model = TestUser

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)    
        context['vechile'] = Vechile.objects.all()
        return context

testuser_list.html

 {% for comment in object_list %}
        <tr>
            <td>{{ comment.name }}</td>
            <td>{{ comment.address }}</td>
            <td>{{ comment.phone }}</td>
            <td><a href="{% url 'myapp:edit-table' comment.id %}">edit</a></td>
            <td><a href="{% url 'myapp:delete-table' comment.id %}">Delete</a></td>
        </tr>
    {% endfor %}

 {% for comment in object_list %}
            <tr>
                <td>{{ comment.name }}</td>
                <td>{{ comment.bike }}</td>
                <td>{{ comment.car }}</td>
            </tr>
        {% endfor %}

我需要显示两个模型(TestUser和Vechile)的数据,现在我仅从TestUser模型中获取数据。

1 个答案:

答案 0 :(得分:1)

您可以通过在print(context)之前的视图中添加return context或使用django-debug-toolbar进行调试。您将看到上下文包含object_listvechile

因此,在模板中,您可以执行以下操作:

{% for object in object_list %}
    {{ object }}
{% endfor %}

{% for v in vechile %}
    {{ v }}
{% endfor %}