gpt4 book ai didi

python - Django:如何访问和显示一对多关系中单个 "child"的详细信息?

转载 作者:太空宇宙 更新时间:2023-11-03 20:30:57 24 4
gpt4 key购买 nike

我有两个模型 - 公司和部门。公司可以有很多部门 - 这些部门都与外键相关并且按预期工作。我已经很好地设置了 URL 和模板/ View ,我可以添加公司,然后可以向其中添加部门。我还可以访问和创建新部门并将其分配给公司。

要查看我使用的系统中的最后 5 个公司和最后 5 个部门:

    class IndexView(generic.ListView):
model = Company
template_name = 'company/index.html'
context_object_name = 'latest_company_list'

def get_queryset(self):
"""Return the last five created companies."""
return Company.objects.order_by('company_name')[:5]

class DeptIndexView(generic.ListView):
model = Department
template_name = 'department/index.html'
context_object_name = 'latest_department_list'

def get_queryset(self):
"""Return the last five created companies."""
return Department.objects.order_by('dept_name')[:5]


这是来自 models.py 的模型

class Company(models.Model):
company_name = models.CharField(max_length=200)
company_dba = models.CharField(max_length=200)

class Meta:
verbose_name_plural = "companies"

def __str__(self):
return self.company_name

# on submit click on the company entry page, it redirects to the url below.
def get_absolute_url(self):
return reverse('company:index')


class Department(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
dept_name = models.CharField(max_length=200)
dept_code = models.IntegerField(default=0)

def __str__(self):
return self.dept_name

# on submit click on the department entry page, it redirects to the url below.
def get_absolute_url(self):
return reverse('company:index')

我的 urls.py 文件如下所示

app_name = 'company'
urlpatterns = [
# Company management views
path('', views.IndexView.as_view(), name='index'),
path('<int:pk>/', views.DetailView.as_view(), name='detail'),
path('add/', views.CompanyEntry.as_view(), name='add'),
path('update/<int:pk>/', views.CompanyUpdate.as_view(), name='update'),
path('delete/<int:pk>/', views.CompanyDelete.as_view(), name='delete'),

#Department management views
path('<int:pk>/department/', views.DeptIndexView.as_view(), name='dept_index'),
path('<int:pk>/department/add/', views.DeptEntry.as_view(), name='dept_add'),
path('<int:pk>/department/<int:fk>/', views.DeptDetailView, name='dept_detail'),
]

这里的问题是我不知道如何配置 URL/路径,以便我可以访问有关一个部门的详细信息。

我正在尝试获取类似 http://127.0.0.1:8000/company/1/department/2/ 的内容其中 2 是部门模型的 ID。

上面代码中的最后一行似乎不起作用。

相反,我收到此错误:

/company/1/department/2/处出现类型错误

init() 接受 1 个位置参数,但已给出 2 个

请求方式:GET请求网址:http://127.0.0.1:8000/company/1/department/2/Django 版本:2.2.4异常类型:TypeError异常值:

init() 接受 1 个位置参数,但已给出 2 个

异常位置:_get_response 第 113 行中的/Users/ABC/DjangoHR/lib/python3.7/site-packages/django/core/handlers/base.py

最佳答案

我想通了 - 我错过了 .as_view()

path('<int:pk>/department/<int:fk>/', views.DeptDetailView.as_view(), name='dept_detail'),

感谢大家的帮助和评论!

关于python - Django:如何访问和显示一对多关系中单个 "child"的详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com