You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求一对多关联的School与Student模型的Django URL配置

搞定School和Student模型的Django URL配置

首先得先把你的Student模型里的外键关联补全,不然一对多关系没法正常工作,补全后的Student模型代码如下:

class Student(models.Model):
    name = models.CharField(max_length=256)
    age = models.PositiveIntegerField()
    # 补全外键关联,related_name方便从学校反向获取学生列表
    school = models.ForeignKey(School, on_delete=models.CASCADE, related_name='students')

    def __str__(self):
        return self.name
    
    def get_absolute_url(self):
        return reverse("basic_app:student_detail", kwargs={'pk': self.pk})

接下来分项目根URL配置和应用(basic_app)URL配置两部分来设置:

1. 项目根目录的urls.py

需要把basic_app的路由包含进来,并且设置应用命名空间(和你模型里get_absolute_url用的basic_app:对应):

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 把basic_app的路由挂载到/basic_app/路径下,指定命名空间
    path('basic_app/', include('basic_app.urls', namespace='basic_app')),
]

2. basic_app目录下的urls.py

这里需要配置学校列表、学校详情、学生详情这些核心页面的路由,假设你用Django自带的基于类的视图(ListView、DetailView)来实现视图逻辑:

from django.urls import path
from . import views

urlpatterns = [
    # 学校列表页:访问路径为/basic_app/schools/
    path('schools/', views.SchoolListView.as_view(), name='school_list'),
    # 学校详情页:对应模型里get_absolute_url的school_detail,接收主键pk参数
    path('schools/<int:pk>/', views.SchoolDetailView.as_view(), name='school_detail'),
    # 学生详情页:单独查看学生信息的页面
    path('students/<int:pk>/', views.StudentDetailView.as_view(), name='student_detail'),
]

补充:对应的视图示例(basic_app/views.py)

为了让URL能正常工作,你需要在视图里定义这些基于类的视图:

from django.views.generic import ListView, DetailView
from .models import School, Student

class SchoolListView(ListView):
    model = School
    # 模板默认会使用school_list.html,可通过template_name自定义模板路径

class SchoolDetailView(DetailView):
    model = School
    # 模板默认会使用school_detail.html,在模板里可通过{{ object.students.all }}获取该学校的所有学生

class StudentDetailView(DetailView):
    model = Student

这样配置后,你模型里的get_absolute_url就能正常跳转学校详情页,学生的详情页也能通过对应URL访问啦。

内容的提问来源于stack exchange,提问作者WISAM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 02:29:06