zoukankan      html  css  js  c++  java
  • Django 多对多关系的增删改查

    Django多对多数据增删改查

    1.表结构及基本方法

    1.表结构

    # models.py
    class Book(models.Model):
        author = models.ManyToMany(to='author', relate_name='author')
    	"""
    	...字段
    	"""
        
    class author(models.Model):
        """
        ...字段
        """
    

    2.基本方法

    # 增、删、改
    add() # 增加
    remove() # 删除表,只删一条数据
    clear() # 清空表, 把所有关系的表全部清空 例如 book_obj.author.clear() 表示把当前书籍对象的所有作者全部清空
    

    2.查

    # views.py
    
    # 获取主键id值为1的图书对象
    book_obj = models.Book.object.filter(pk=1).first()
    
    # 通过图书对象获取该图书对象下的所有作者
    all_author = book_obj.author.all()  # 这里的author字段是建表时候的字段名
    
    # 结果为类似列表的querry_set列表对象
    

    3.增

    # views.py
    author_list = [1, 2, 3, 4]
    # 获取当前新增的图书对象
    book_obj = models.Book.objects.create(
                title=123,
                price=123,
                publish=123,
            )
    
    # 通过当前新增的图书对象在多对多关系表中添加对应关系字段
    book_obj.author.add(*author_list)
    # save()方法保存
    book_obj.save()
    
    # add()方法可以接收一个值,也可以用逗号隔开接收多个值
    

    4.改

    # views.py
    
    # 修改图书作者为下方列表
    author_list = [1, 2, 3, 4]
    
    # 获取当前修改的图书对象
    book_obj = models.Book.objects.filter(pk=1).first()
    
    # 先清除当前图书的所有作者再添加
    book_obj.author.clear()
    book_obj.author.add(*authors_list)
    book_obj.save()
    
    # 直接修改
    book_obj.author.set(*authors_list)
    
  • 相关阅读:
    UVa 11181
    UVa 10491
    UVa 1636
    UVa 1262
    UVa 10820
    UVa 1635
    UVa 12716
    [2019杭电多校第六场][hdu6635]Nonsense Time
    [2019杭电多校第五场][hdu6630]permutation 2
    [2019杭电多校第五场][hdu6629]string matching(扩展kmp)
  • 原文地址:https://www.cnblogs.com/17vv/p/11723372.html
Copyright © 2011-2022 走看看