栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

两表连接进行增删改查

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

两表连接进行增删改查

添加模型类

在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


专业表

    {% for major in majors %}
    
    {% endfor %}
编号 专业名称
{{ 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


学生表

   {% for student in students %}
   
   {% endfor %}
编号 姓名 成绩 性别 专业编号 操作
{{ 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/')

在专业页面下边写添加表单

{% csrf_token %} 姓名:
成绩:
性别:
专业编号:
删除
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 }}/">修改
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/856160.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号