图书管理系统值多对多关系的增删改查

1,多对多的关机设计

  作者  <--->  书籍

  1.1>ORM穿件第三张表

    1>自己创建第三张表

    2>让ORM帮我们创建第三章表:models.ManytoManyFiled()

    3>第三种,待补充(ORM进阶操作)

2,作者 的增删改查

  2.1>if判断

      {% if 条件  %}

      {% else %}

      {% endif %}

3,Django请求的流程图

 4,作者表和书籍表的多对多结构设计

from django.shortcuts import render, redirect, HttpResponse

# Create your views here.
from app01.models import Press, Book, Author def author_list(request): # 用户第一次进来给用户展示追着的页面 # 1从数据库读取数据 author_data = Author.objects.all() # for author in author_data: # print(author.books.all()[0].name) # book_data = Book.objects.all() # press_data = Press.objects.all() return render(request, "author_list.html", {"author_data": author_data}) def add_author(request): # 2第二次进来,是POST请求,要提交数据 if request.method == "POST": # 2.1获取用户输入的作者姓名 new_author_name = request.POST.get("author_name") # 2.2获取用户输入的作品 new_book_names = request.POST.getlist("books") print(new_book_names) # 拿到的是书籍名称对应的id值 # 3把获取到的数据更新到数据库中 author_obj = Author.objects.create(name=new_author_name) print(author_obj) # 创建一个作者的对象 author_obj.books.add(*new_book_names) # 给作者的对象添加books的属性增加数据 return redirect("/author_list/") # 1当第一次进来返回给用户一个添加的页面 book_data = Book.objects.all() for book in book_data: print(book.name) return render(request, "add_author.html", {"book_list": book_data}) def delete_author(request): # 1,获取到用户是点击的你那个删除的按钮 delete_id = request.GET.get("id") # 2,获得要删除的作者对象 delete_obj = Author.objects.get(id=delete_id) print(delete_obj) # 3,取数据库中找到这个对象,并删除掉  delete_obj.delete() # 4,给用户返回删除以后的作者列表 return redirect("/author_list/") def edit_author(request): # 用户第一次进来是GET请求,需要但会一个编辑的页面 # 在返回页面前需要把这个标签原来的作者名和 书籍名称返回给用户 edit_id = request.GET.get("id") # 获得要编辑的对象 edit_obj = Author.objects.get(id=edit_id) print(edit_obj.name) # 2,第二次进来是POST请求 if request.method == "POST": # 2.1,获取用户输入的作者名字 edit_name = request.POST.get("author_name") # 2.2,获取用户选择的书籍名字 edit_book_ids = request.POST.getlist("books") # 3,把获取到的数据更新到数据库中 edit_obj.name = edit_name # 3.1 刷新一些数据库中  edit_obj.save() # 3.2,修改秀偶像和和数据集的关系表  edit_obj.books.set(edit_book_ids) # 4,返回给用户修改后的页面 return redirect("/author_list/") # 1,返回页面 # 2,获得书籍的对象 book_data = Book.objects.all() return render(request, "edit_author.html", {"book_data": book_data}, {"author_obj": edit_obj})

猜你喜欢

转载自www.cnblogs.com/ljc-0923/p/9806186.html