在model.py里添加模型类,增加外键,并生成迁移,运行迁移。
from django.db import models
# Create your models here.
class Major(models.Model):
major_name = models.CharField(max_length=20,verbose_name='专业名')
class Meta:
verbose_name = '专业表'
verbose_name_plural = verbose_name
db_table = 'major'
def __str__(self):
return self.major_name
class Student(models.Model):
stu_name = models.CharField(max_length=20,verbose_name='姓名')
score = models.IntegerField(verbose_name='成绩')
sex = models.CharField(max_length=3,verbose_name='性别')
#增加外键
major = models.ForeignKey(Major,on_delete=models.CASCADE,verbose_name='专业编号')
class Meta:
verbose_name = '学生表'
verbose_name_plural = verbose_name
db_table = 'student'
def __str__(self):
return self.stu_name
在admin.py里注册模型类。注册超级用户,并增加数据
from django.contrib import admin from student.models import Major,Student # Register your models here. admin.site.register(Major) admin.site.register(Student) # 终端里注册超级用户 python manage.py createsuperuser展示页面
展示专业页面
Views.py
class MajorView(View):
def get(self,request):
major_data = Major.objects.all()
content = {
'majors' : major_data
}
return render(request,'major.html',content)
注册路由在urls.py
from django.urls import path
from student import views
urlpatterns = [
path('major/',views.MajorView.as_view()),
]
展示页面
Title
专业表
| 编号 | 专业名称 |
|---|---|
| {{ major.id }} | { major.id }}/">{{ major.major_name }} |
展示学生页面
class StudentView(View):
def get(self,request,id):
student_data = Student.objects.filter(major_id = id)
content = {
'students' : student_data
}
return render(request,'student.html',content)
注册路由在urls.py
from django.urls import path
from student import views
urlpatterns = [
path('student//',views.StudentView.as_view()),
]
展示页面
Title 学生表
| 编号 | 姓名 | 成绩 | 性别 | 专业编号 | 操作 |
|---|---|---|---|---|---|
| {{ student.id }} | {{ student.stu_name }} | {{ student.score }} | {{ student.sex }} | {{ student.major }} | { student.id }}/">删除 { student.id }}/">修改 |
可以在专业页面下边写post方法
def post(self,request):
name = request.POST.get('name')
score = request.POST.get('score')
sex = request.POST.get('sex')
major = request.POST.get('major')
try:
Student.objects.create(
stu_name = name,
score = score,
sex = sex,
major_id = major
)
except Exception as e:
print(e)
return HttpResponse('添加失败')
return redirect('/major/')
在专业页面下边写添加表单
删除class DeleteView(View):
def get(self,request,id):
Student.objects.filter(id=id).delete()
return redirect('/major/')
注册动态路由
from django.urls import path
from student import views
urlpatterns = [
path('delete//',views.DeleteView.as_view()),
]
在学生页面后边增加删除操作
{ student.id }}/">删除
修改
class UpdateView(View):
def get(self,request,id):
try:
student_data = Student.objects.get(id = id)
content = {
'students' : student_data
}
except Exception as e:
print(e)
return HttpResponse('获取数据失败')
return render(request,'update.html',content)
def post(self,request,id):
name = request.POST.get('name')
score = request.POST.get('score')
sex = request.POST.get('sex')
major = request.POST.get('major')
try:
Student.objects.filter(id=id).update(
stu_name = name,
score = score,
sex = sex,
major = major
)
except Exception as e:
print(e)
return HttpResponse('修改失败')
return redirect('/major/')
注册动态路由
from django.urls import path
from student import views
urlpatterns = [
path('update//',views.UpdateView.as_view())
]
在学生页面后边增加删除操作
{ student.id }}/">修改



