首页 > 解决方案 > 在模板上使用 for 循环时不会显示来自 Listview 的对象 - Django

问题描述

我正在尝试通过在模板(landingpage.html)上使用for循环在Listview中显示Company中的所有对象,但它显示为空。对我来说棘手的部分是模型类(公司)来自与创建列表视图的目录不同的目录。我在 views.py 中导入模型类(公司),但它在模板上仍然显示为空。

在此处输入图像描述

关于为什么会这样的任何想法?


事件/views.py

from company.models import Company

class LandingpageView(ListView):
    model = Event
    template_name = "event/landingpage.html"
    ordering = ['date']
    context_object_name = 'event_list'

class LatestCompanyView(ListView):
    model = Company
    template_name = "event/landingpage.html"

事件/urls.py

from .views import LatestCompanyView

urlpatterns = [
    path('event/landingpage/', LatestCompanyView.as_view(), name='landingpage'),
]

事件/landingpage.html

{% block content %}
    <div class="row about-django">
    <div class="col-6">
    </div>
    <div class="col-6">
        <img class="about-django-img" src="{% static 'img/hero.png' %}">
    </div>
</div>
<h1>Events</h1>
<div class="event-container">
{% for Event in event_list %}
    <div class="row event-row">
        <div class="col-4 event-col"><img src="{{ Event.eventImage.url}}" alt="{{ Event.eventTitle }}"></div>
        <div class="col-4 event-col">
            <h3 class="event-title">{{ Event.eventTitle }}</h3>
            <div>Date: {{ Event.date }}</div>
            <div>Location: {{ Event.location }}</div>
            <div>Description: {{ Event.description }}</div>
        </div>
        <div class="col-2 event-col"><a href="{{ Event.eventUrl }}" class="btn btn-event">Buy Tickets</a></div>
    </div>
{% endfor %}
    </div>
        <h1>Latest</h1>
        <div class="event-container"> 
        {% for Company in company_list %}
            <h3 class="event-title">{{ Company.description }}</h3>
        {% empty %}
        Nothing here!
        {% endfor %}
    </div>

{% endblock %}

公司/models.py

class Company(models.Model):

user = models.ForeignKey(User, on_delete = models.CASCADE, default = None)
description = models.TextField()


def __str__(self):
    return '{} {}'.format(self.user, self.description)

标签: pythondjangolistviewdjango-class-based-views

解决方案


事件/views.py:

class LatestCompanyView(ListView):
    model = Company
    template_name = "event/landingpage.html"
    context_object_name = 'company_list'

推荐阅读