zoukankan      html  css  js  c++  java
  • Django-多对多增删改查

    Django多对多数据增删改查

    1.表结构及基本方法

    • 表结构
      •  1 # models.py
         2 class Book(models.Model):
         3     author = models.ManyToMany(to='author', relate_name='author')
         4     """
         5     字段
         6     """
         7     
         8 class author(models.Model):
         9     """
        10     字段
        11     """
    • 基本方法
    1 # 增、删、改
    2 add() # 增加
    3 remove() # 删除表,只删一条数据
    4 clear() # 清空表, 把所有关系的表全部清空 例如 book_obj.author.clear() 表示把当前书籍的所有作者全部清空
        • 1 # views.py
          2 
          3 # 获取主键id值为1的图书对象
          4 book_obj = models.Book.object.filter(pk=1).first()
          5 
          6 # 通过图书对象获取该图书对象下的所有作者
          7 all_author = book_obj.author.all()  # 这里的author字段是建表时候的字段名
          8 
          9 # 结果为类似列表的querry_set列表对象
        •  1 # views.py
           2 author_list = [1, 2, 3, 4]
           3 # 获取当前新增的图书对象
           4 book_obj = models.Book.objects.create(
           5             title=123,
           6             price=123,
           7             publish=123,
           8         )
           9 
          10 # 通过当前新增的图书对象在多对多关系表中添加对应关系字段
          11 book_obj.author.add(*author_list)
          12 # save()方法保存
          13 book_obj.save()
          14 
          15 # add()方法可以接收一个值,也可以用逗号隔开接收多个值
        •  1 # views.py
           2 
           3 # 修改图书作者为下方列表
           4 author_list = [1, 2, 3, 4]
           5 
           6 # 获取当前修改的图书对象
           7 book_obj = models.Book.objects.filter(pk=1).first()
           8 
           9 # 先清除当前图书的所有作者再添加
          10 book_obj.author.clear()
          11 book_obj.author.add(*authors_list)
          12 book_obj.save()
          13 
          14 # 直接修改
          15 book_obj.author.set(*authors_list)
        • 1 # views.py
          2  
          3 # 直接删除数据
          4 .delete()
          5  
          6 # 删除外键关系:数据还在
          7 remove(t1,t2,t3)
  • 相关阅读:
    python中创建列表、元组、字符串、字典、集合
    python中字典的键不允许重复
    python中生成字典
    python中实现列表元素的倒序排列
    python中实现字典的逆向排列
    python中增加字典的键值对(项)、修改键值对的值
    python中访问字典
    Fortran 2003:完美还是虚幻?(节选)
    感谢裘宗燕老师!
    “符号化”的效用和缺失
  • 原文地址:https://www.cnblogs.com/z-han/p/12831085.html
Copyright © 2011-2022 走看看