Django将外键从ListView传递到Detailvi

2024-10-01 09:37:45 发布

您现在位置:Python中文网/ 问答频道 /正文

关于Django的观点,我有些不太了解。我的网站将有一个表,表上有不同的作业或负载。这叫做负荷板。它引用一个名为Loadboard_table的数据库表。Loadboard_表包含数据库中Company_表的外键。此数据库表包含分配此作业/负载的公司以及公司的其他信息。在

目标是让用户点击装载板上的任何一行,这将把用户带到公司的“详细信息”页面。我已经展示了下面代码的一个浓缩部分,以避免使问题膨胀。在

索引上的表行项目

<!-- this is where I grab my Company table foreign key by clicking on one of the loadboard items -->
<td>
 <a href="{% url 'loadboard:detail' item.CompanyName_id %}">   {{item.CompanyName}}</a>
</td>

在网址.py在

^{pr2}$

在视图.py在

from django.views import generic
from .models import Company_table, Loadboard_table


class IndexView(generic.ListView):
    template_name = 'loadboard/index.html' 
    context_object_name = 'all_loadboard' 

    def get_queryset(self):
        return Loadboard_table.objects.all() 

class DetailView(generic.DetailView):
    model = Company_table
    template_name = 'loadboard/detail.html'

在详细信息.html在

<!-- I want this detail page to show the Company that the loadboard's foreign key references -->
<head>
    <title>{% block title %}{{Company_table.CompanyName}}'s loadboard{% endblock %}</title>
</head>

非常感谢您的帮助!在


Tags: the用户name数据库titlehtml作业table
1条回答
网友
1楼 · 发布于 2024-10-01 09:37:45

我找到了一种不使用DetailView类就可以达到目标的方法。我简单地创建了一个函数来处理HTTP请求并从url接收CompanyId。我认为DetailsView类用于更具体的情况。在

当用户单击时:

<td>
<a href="{% url 'loadboard:detail' item.CompanyName_id %}">{{item.CompanyName}}</a>
</td>

然后它触发这个URL模式网址.py公司名称:

^{pr2}$

在上使用函数视图.py公司名称:

def ViewCompanyDetails(request, CompanyId):
    CompanyObject = Company_table.objects.get(id = CompanyId)
    context = {'Company': CompanyObject}
    return render(request, 'loadboard/detail.html', context)

这实现了我的目标,尝试从用户单击表的地方传递公司id,并将其一直传递到views页面并获得该HTML页面。在

对于泛型模型中的DetailsView类,我可能是错的,它对主键过于具体,但有人可以纠正我的错误。在

相关问题 更多 >