Django数据库表中多对多关系ROM操作

1.Django处理web请求的流程:
  1. 浏览器发送请求

    1. Django接收到请求

    2. 在urls.py中匹配url,找到对应的函数

    3. 执行函数(views.py)   -- 业务逻辑

    4. 得到函数的返回值返回给浏览器

2.发请求的方式:
  1. 在浏览器上输入地址,回车  ——》  get

    1. 点击a标签   ——》 get

    2. form表单 默认是 get请求

    3. form表单 method = 'post'    ——》 post

3.返回的响应
  1. HttpResponse('字符串')     ——》  字符串

    1. render(request,'HTML文件名',{key:value})   ——》 一个完整的HTML页面. redirect('跳转的地址')   ——》重定向  Location:地址

4.外键

​ 表示多对一的关系      book    publisher 

class Book(models.Model):
   title = models.CharField(max_length=32, unique=True)  # 书籍的名称
   publisher = models.ForeignKey('Publisher', on_delete=models.CASCADE)  # 关联了出版社

​ 查询:

​ book_obj_list = models.Book.objects.all()

​ for book in book_obj_list :

​ book.id    ——》主键

​ book.title ——》标题

​ book.publisher  ——》关联的出版社对象

​ book.punlisher_id   ——》 本张表中存的出版社的ID

​ book.publisher.name    ——》出版社的名称

​ 创建:

​ models.Book.objects.create(title='xxxxx',publisher=publisher_obj )   # 使用对象

​ models.Book.objects.create(title='xxxxx',publisher_id=publisher_obj.id  )   # 使用对象id

​ 删除:

​ models.Book.objects.get(id=1).delete()

​ models.Book.objects.filter(id=1).delete()

​ 编辑:

​ book_obj.title = 'xxxx'

​ book_obj.publisher = publisher _obj  

​ book_obj.publisher_id = publisher _obj.id

​ book_obj.save()

 

1.多对多的关系
  1. model


    class Author(models.Model):
       name = models.CharField(max_length=32, unique=True)  # 作者的名字
       books = models.ManyToManyField('Book')  # 表示作者和书籍 多对多的关系

 

 

 

 

 

2.作者的增删改查
  1. 查询

 

  1. 新增

 

  1. 删除、编辑见代码

 

 

3.多对多补充

 

自己创建第三表,还要使用管理对象

 

posted @ 2018-12-04 17:48  冒蓝火的加特林哒哒哒  阅读(284)  评论(0编辑  收藏  举报