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


    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})
  • 相关阅读:
    Splay专题总结
    UVa12657
    ZOJ3772
    POJ1743
    高斯消元模板
    python使用chrom登陆微博
    mysql常用数据库(表)命令
    mysql索引
    mysql建表的时候,时间戳的选用
    php 金额每三位添加一个逗号
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9806186.html
Copyright © 2020-2023  润新知