如何将多个模型绑定到模板

时间:2019-05-15 12:39:07

标签: django

我正在尝试使用从数据库中恢复的选项来提供选择标签。 问题是,我完全是Django的初学者,甚至都不知道如何搜索。

我使用的是通用视图,据我所知,模板由绑定到context_object的模型提供,默认命名为object_list,但是您可以在context_object_name变量中进行更改。 但是我的companies_object无法提供模板。

        <tbody>
            {% for project in projects %}
                <tr>
                    <td>
                      {{ project.title }}
                    </td>
                 [...]

        <select>
            {% for company in companies %}
            <option value="{{company.id}}">{{company.name}}</option>
            {% endfor %}
        </select>
class ProjectsView(LoginRequiredMixin, ListView):
    model = Project
    context_object_name = 'projects'
    template_name = 'projects/projects.html'

    def select_company(self):
        companies = Company.objects.all()
        return 1 #return selected company

    def get_projects(self):
        seek_in_database()
        return projects

我希望知道如何在同一模板中显示两个不同的对象,即已经工作的项目和公司对象。 我怀疑model = Projectscontext_object_name的模版是如何获取项目数据的。

我知道这是入门级的,并且我不希望有人写出完整的指南,我对某些主题的指示感到非常满意。

1 个答案:

答案 0 :(得分:2)

这是我的示例:

class CompanyListView(ListView):
    model = Company
    context_object_name = 'companies'
    template_name = 'core/company/listCompanies.html'

    queryset = Company.objects.get_main_companies()

    def get_context_data(self, **kwargs):
        context = super(CompanyListView, self).get_context_data(**kwargs)
        context.update({
            'company_abbr': self.request.session.get('company_abbr'),
            'page_title': 'Manage Companies',
        })
        return context

因此,在get_context_data中,您可以根据需要添加任意数量的数据。