day64

内容回顾
    1. ORM外键操作
        图书表和出版社表  多对一 的关系
        
    # 书
    class Book(models.Model):
        id = models.AutoField(primary_key=True)  # 自增的ID主键
        # 创建一个varchar(64)的唯一的不为空的字段
        title = models.CharField(max_length=64, null=False, unique=True)
        # 和出版社关联的外键字段
        publisher = models.ForeignKey(to="Publisher")
        
    2. 查\增\删\改操作
        1. 查
            book_list = models.Book.objects.all()  --> 书对象的列表

i.publisher对应的是出版社的对象。

2. 增
            new_book_obj = models.Book.objects.create(
                title="新书的名字",
                # publisher=publusher_obj,   #传对象
                publisher_id=7     #或者传id
            )
        3. 删除
            models.Book.objects.get(id=10).delete()
            
        4. 修改
            book_obj = models.Book.objects.get(id=9) # 取出要修改的书
            book_obj.title=request.POST.get("book_title")
            book_obj.publisher_id=9
            book_obj.save()

book表和author表通过第三张表 author2book 建立多对多的关系(一本书有多个作者,一个作者有多本书)。

author表多对多关联book表

  1. class Publisher(models.Model):
  2. id = models.AutoField(primary_key=True)
  3. name = models.CharField(max_length=64, null=False, unique=True)
  4.  
  5. # 终端执行命令
  6.  
  7. class Book(models.Model):
  8. id = models.AutoField(primary_key=True)
  9. title = models.CharField(max_length=64, null=False, unique=True)
  10. # 和出版社关联的外键字段
  11. publisher = models.ForeignKey(to="Publisher")
  12.  
  13. def __str__(self):
  14. return "<Book object: {}>".format(self.title)
  15.  
  16. class Author(models.Model):
  17. id = models.AutoField(primary_key=True)
  18. name = models.CharField(max_length=16, null=False, unique=True)
  19. # 告诉ORM,我这张表是和book表是多对多的,ORM自动生成第三张表
  20. book = models.ManyToManyField(to="Book")
  21.  
  22. def __str__(self):
  23. return "<Author object: {}>".format(self.name)
  24.  
  25. # 自己实现一张第三张表 app01_author_book

生成的表:

其中app01_author是自动生成的,book = models.ManyToManyField(to="Book")知道了作者和书是多对多的关系 。

书与作者多对多

还是多对多的问题

request.POST.getlist()  提交的数据是多个值的时候

对应程序

添加作者

返回的是作者名字与书的列表

class="active"使点击那一栏高亮

author_list.html、book_list.html、publisher_list.html使其中的对应部分写上class="active",点击部分高亮。

label标签加for、placeholder

有for和ID关联后,当点击”姓名“(label的”姓名“,而非输入框中的“姓名”)光标会聚焦在输入框中,当去掉for时,只有点击输入框中的“姓名”,才会有光标,这种功能常用于checkbox。

placeholder默认显示。

以上详细内容见: mysiteday62

Django(图书管理系统2)的更多相关文章

  1. Django——图书管理系统

    基于Django的图书管理系统 1.主体功能 1.列出图书列表.出版社列表.作者列表 2.点击作者,会列出其出版的图书列表 3.点击出版社,会列出旗下图书列表 4.可以创建.修改.删除 图书.作者.出 ...

  2. Django(图书管理系统1)

    day63 内容回顾     1. 单表的增删改查         1. 删和改             1. GET请求 URL传值                 1. 格式            ...

  3. Django图书管理系统(前端对数据库的增删改查)

    图书管理系统 出版社的管理 源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E7%9B%AE/ ...

  4. django 图书管理系统

    一.图书管理系统 单表的增删改查 1.创建项目 2.注释掉中间件 就可以提交post 请求 3.配置静态文件 并手动创建static 文件夹存放静态文件  二.具体的数据库配置 1.创建数据库  2. ...

  5. Django图书管理系统(前端对有外键的数据表增删改查)

    图书管理 书籍管理 book name 项目源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E ...

  6. django图书管理系统实例

    首页,其他页面全部继承首页的上半部分 点击发布图书页面 首页点击书名,跳转到图书信息界面,该界面可删除图书 项目结构 #views.py from django.shortcuts import re ...

  7. Django图书管理系统(单表操作)

    以下内容需要掌握: Python3 以及前端:HTML,CSS,jQuery,BootStrap,Django,JavaScript 开启Django新项目: 1,settings.py 数据库选择: ...

  8. Django练习——图书管理系统

    Django图书管理系统 创建一个项目 1. django-admin startproject 图书管理 2. cmd 命令终端下创建一个app python manage.py startapp ...

  9. 在Django中使用ORM创建图书管理系统

    一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等 ...

随机推荐

  1. PAT 1034 有理数四则运算(20)(代码框架+思路+测试点错误分析)

    1034 有理数四则运算(20)(20 分)提问 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的 ...

  2. PAT 1003 我要通过!(20)(代码+思路)

    1003 我要通过!(20)(20 分)提问 "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于PAT的"答案正确"大派送 -- 只要读入的字符串满足下 ...

  3. 20172325 2017-2018-2 《Java程序设计》第九周学习总结

    20172325 2017-2018-2 <Java程序设计>第九周学习总结 教材学习内容总结 异常 1.学习了异常的基本概念: 2.区分异常与错误: 一个异常是指一个定义非正常情况或错误 ...

  4. UI设计初学者如何避免走弯路?

    对于初学UI设计的人而言,可能对UI具体是做什么,或者自己是否能顺利转行胜任这样的岗位存在一定的顾虑,今天我们就来重点说说UI是做什么的,以及想学UI到底要如何避免走弯路,快速的学成. 问题一:UI设 ...

  5. boost::asio 学习草稿

    http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting-started-with-boostasio/ 可以多个线程拥有io_ ...

  6. mysql数据库中如何查询日期在两个时间之间的关系

    select * from banner where addDate between '2017-06-04' and '2017-06-06';

  7. 美团点评2017校招笔试真题-算法工程师B

    美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...

  8. 2018.09.15 hdu1599find the mincost route(floyd求最小环)

    传送门 floyd求最小环的板子题目. 就是枚举两个相邻的点求最小环就行了. 代码: #include<bits/stdc++.h> #define inf 0x3f3f3f3f3f3f ...

  9. hdu-1175(bfs+剪枝)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路:用bfs,注意要转弯的次数,次数大于两次就跳过. #include<iostream ...

  10. Django的路由层(1)

    https://www.cnblogs.com/yuanchenqi/articles/8876685.html URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为 ...