• 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.多对多补充

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

  • 相关阅读:
    罗马数字转整数,Java执行时间超过100%用户的写法
    Vue生产环境调试的方法
    pdf翻译并转html
    {"$ref":"$.data.jobTaskList[0]"}
    More than one row with the given identifier was found
    去掉告警信息,去除告警信息
    Initialized JPA EntityManagerFactory for persistence unit 'default'
    获取当前包名、获取包名、
    nginx丢失头部信息
    SQL Error: 1526, SQLState: HY000,Table has no partition for value 738625
  • 原文地址:https://www.cnblogs.com/PythonMrChu/p/10065640.html
Copyright © 2020-2023  润新知