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

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

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

 

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