码迷,mamicode.com
首页 > 其他好文 > 详细

Django之跨表查询——正反向查询(ManyToManyField)

时间:2019-11-03 10:58:20      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:列表   多个   name   objects   mamicode   width   删掉   提示   关系   

1.多对多查询:涉及到两张表以上的查询。

    author_obj = models.Author.objects.first()
    print(author_obj.name)
    # 查询金老板写过的书
    ret = author_obj.books.all()
    print(author_obj.books,type(author_obj.books))
    print(ret)

技术图片技术图片

    # 1.create
    # 通过作者创建一本书,会自动保存
    # 做了两件事:
    # 1.在book表里创建一本新书;2.在作者和书的关系表中添加关联记录
    author_obj.books.create(title="金老板自传",publisher_id=2)
    # 2.add
    # 在金老板关联的书里面,再加一本id是4的书
    book_obj = models.Book.objects.get(id=4)
    author_obj.books.add(book_obj)
    # 3.添加多个
    book_objs = models.Book.objects.filter(id__gt=2)
    # 不可以直接add(book_objs)
    # 要把列表打散,再传进去
    author_obj.books.add(*book_objs)
    # 4.直接添加id
    author_obj.books.add(3)
    # 5.remove
    # 从金老板关联的书里面把开飞船 删掉
    book_obj = models.Book.objects.get(title="跟金老板学开飞船")
    author_obj.books.remove(book_obj)
    # 从金老板关联的书里面把id是8的记录删掉
    author_obj.books.remove(8)
    # clear
    # 清空
    # 把id=2的作者所关联的所有书都删掉
    author2_obj = models.Author.objects.get(id=2)
    author2_obj.clear()
    # 会提示:AttributeError: ‘Author‘ object has no attribute ‘clear‘

技术图片

 

Django之跨表查询——正反向查询(ManyToManyField)

标签:列表   多个   name   objects   mamicode   width   删掉   提示   关系   

原文地址:https://www.cnblogs.com/cwj2019/p/11783144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!