zoukankan      html  css  js  c++  java
  • django基础 5 作者的增删改查

    1.内容回顾
        1. 外键的增删改查
          1. 外键的语法
            models.ForeignKey(to='', on_delete=models.CASCADE)
          2. 外键查询的语法
            book_obj.press --> 取到的是和我这本书关联的出版社对象
            book_obj.press_id --> 数据库中实际保存的外键id
        2. Django模板语言
          1. if判断
              {% if 条件 %}
                ...
              {% else %}
                ...
              {% endif %}
        3. 昨天问题
          1. ORM创建表的时候,出来俩选项
            1) ...
            2) ...

            给数据库中已经存在的表添加另外一个字段,这个字段既没有默认值也不能为空
            ORM就不知道数据库中已经存在的数据该怎么处理这个字段
          2. Django请求的流程图
                见群内截图


        2. 今日内容
          1. 多对多关系
            作者 <--> 书籍
            1. 表结构设计
                1. SQL版
                  -- 创建作者表
                  create table author(
                  id int primary key auto_increment,
                  name varchar(32) not null
                  );

                  -- 创建作者和书的关系表
                  create table author2book(
                  id int primary key auto_increment,
                  author_id int not null,
                  book_id int not null,
                  constraint fk_author foreign key (author_id) references author(id) on delete cascade on update cascade,
                  constraint fk_book foreign key (book_id) references book(id) on delete cascade on update cascade
                  );

            2. ORM版
              1. 第一版:
                自己创建第三张表


              2. 第二版
                让ORM帮我们创建第三张表
                models.ManyToManyField()
              

              3. 第三版
                待补充...(ORM进阶操作的时候)


      2. 作者的增删改查
            1. 查询
                  author_obj.books --> 得到的只是一个关联关系,并不能拿到数据
                  author_obj.books.all() --> 得到和我这个作者关联的所有书籍对象列表
            2. 添加
                1. add()

            3. 删除

            4. 编辑
              1. 模板语言中
                {% if book in author.books.all %}
              2. ORM编辑多对多
                1. 不能直接操作第三张关系表
                2. 借助ORM给提供的方法
                  1. all()
                  2. add(id1,id2)
                  3. set([id1, id2])
                  4. clear()
                3. Django模板语言
                  1. for循环
                    1. forloop.last
                      {% if forloop.last %}
                      ...
                    2. empty
                      {% for i in x %}
                      ...
                      {% empty %}
                        ...
                      {% endfor %}
                4. 上传文件
                    form表单上传文件

    4. 预习任务
    https://www.cnblogs.com/liwenzhou/p/8296964.html --> 看图
    http://www.cnblogs.com/liwenzhou/p/7931828.html --> 看内容,明天主讲Django的模板语言



  • 相关阅读:
    提取左公因子
    如何使用正则表达式构造相对应的ε-NFA
    DFA-NFA 简单介绍 怎么区分
    编译原理 短语 直接短语 定义
    编译原理 符号表为什么设计字符串表这样的结构?
    编译原理 词法分析
    paper 自动翻译论文软件推荐
    github 单个文件超过100M 解决办法 Git LFS 使用
    马哥博客作业第四周
    马哥博客作业第三周
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/13205149.html
Copyright © 2011-2022 走看看