图书管理系统之外键的增删改查

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

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

猜你喜欢

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