zoukankan      html  css  js  c++  java
  • 图书管理系统之外键的增删改查

    ---恢复内容开始---

    1,图书管理系统的表结构设计

      1.1>id,titlev,出版社_id

      1.2>ORM外键:press = models.ForignKey(to="Press", on_delete=models.CASCDE)

    2,书籍的增删改查

      2.1>查询book_obj.press  ->ORM层面封装,返回的是和这本书关联的出版社对象

          book_obj.press_id  -->数据库中真正存在的字段,保存的是和关联的出版社id值

      2.2>增加>用select标签把已经存在的出版社页面上展示出来,让用户去选择

        使用的是:模板语言的for循环

      2.3>删除:补充3秒之后跳转到指定页面的操作1>location.href(),2>setTimeout(),3>setinterval()

      2.4>编辑,用select标签展示默认的出版社

        Django模板语言中的if判断

        {% if 条件 %}

        {% else %}

        {% endif %}

    3,书籍的代码:

    def book_list(request):
        # 1,用户进来以后给用户展示书籍的清单
        # 从数据库中把数据读取出来
        book_data =  Book.objects.all()
        # print(book_data)
        # 是一个所有书对象的列表
        # 可以通过索引找到每一个对象,对象.外键就等于另一个表的对象(组合)
        return render(request, "book_list.html", {"book_data":book_data})
    
    def add_book(request): 
        # 2 第二次进来是POST请求,提交用户填好的数据
        if request.method =="POST":
            new_book_name = request.POST.get("title")
            new_book_press= request.POST.get("press_id")
            print(new_book_name)
            print(new_book_press)
            # 2,把获取到的数据更新到数据库中
            Book.objects.create(name=new_book_name, press_id=new_book_press)
            # 3,在给用户展示新增以后的页面
            return redirect("/book_list/")
        # 1第一次进来给用于展示添加的页面
        # 2从数据库中获得所有出版社的数据
        press_obj = Press.objects.all()
        print(press_obj)
        return render(request, "add_book.html", {"press_obj":press_obj})
    
    
    def delete_book(request):
        # 1获取用户点击删除的id值
        delete_book_id = request.GET.get("id")
        print(delete_book_id)
        # 2找到这个id值对用 的对象并删除
        Book.objects.filter(id=delete_book_id).delete()
        # 3跳转到书籍列表页面
        return redirect("/book_list/")
    
    
    def edit_book(request):
        # 1先获取用户要编辑的id值
        edit_id = request.GET.get("id")
        # 2获取该id值的对象
        edit_obj = Book.objects.filter(id=edit_id)
        # 第二次进来是POST请求,获取修改完以后的值
        if request.method == "POST":
            new_name = request.POST.get("book_title")
            new_press = request.POST.get("press_id")
            # VBA获取到的数据更新到数据库中
            edit_obj.name = new_name
            edit_obj.press_id = new_press
            # 更新完以后save()一下
            edit_obj.save()
        # 用户第一次进来是获取要编辑的页面
        # 还要把输的原名称和原出版社的列表展示给用户
        # print(edit_obj.press.name)
        press_obj = Press.objects.all()
        return render(
            request,
            "edit_book.html",
            {"book_name":edit_obj}, {"press_data": press_obj})
  • 相关阅读:
    814. Binary Tree Pruning
    50. Pow(x, n)
    698. Partition to K Equal Sum Subsets
    416. Partition Equal Subset Sum
    150. Evaluate Reverse Polish Notation
    322. Coin Change
    Vulnerable Kerbals CodeForces
    D. Domino for Young
    C. Long Beautiful Integer
    B. Modulo Equality
  • 原文地址:https://www.cnblogs.com/ljc-0923/p/9806181.html
Copyright © 2011-2022 走看看