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

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})

 

posted @ 2018-10-17 18:28  帅爆太阳的男人  阅读(407)  评论(0编辑  收藏  举报