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


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)

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn