• Django进阶Model篇006


    接着前面的例子,举例多表查询实例如下:

    1.查询作战的所有完整信息。

    >>> AuthorDetail.objects.values('sex','email','address','birthday','author__name')

    2.查询《持续集成实践》这本书的作者姓名,还有出版社的名字

    >>> Book.objects.filter(title='持续集成实践').values('authors__name','publisher__name')

    3.查询潘晓明写了一些什么书

    >>> Book.objects.filter(authors__name='潘晓明').values('title')

    4.查询机械工业出版社都出版了一些什么书籍

    >>> Book.objects.filter(publisher__name='机械工业出版社').values('title')
    >>> publisher = Publisher.objects.get(name='机械工业出版社')
    >>> publisher.book_set.all().values('title')

    5.查询机械工业出版社都有哪些作者出过书

    >>> Book.objects.filter(publisher__name='机械工业出版社').values('title','authors__name')

    多表查询技巧:

    __:两个下划线可以生成连接查询,查询关联的字段信息

    _set:提供了对象访问相关联表数据的方法。但这种方法只能是相关类访问定义了关系的类(主键类访问外键类)。

    ManyToMany

    多对多之查询:

    正向查询:查询书籍id=1的所有作者

    b1=Book.objects.get(id=1)
    b1.authors.all()

    反向查询:查询id=3的作者所出版的所有书籍

    a1=Author.objects.get(id=3)
    a1.book_set.all()

    正向联表查询:查询书籍id=1的所有作者

    Book.objects.filter(id=1).values('authors__name')

    反向联表查询:查询id=3的作者所出版的所有书籍

    Author.objects.filter(id=3).values('book__title')

    多对多添加:

    正向添加:

    b1=Book.objects.get(id=1)
    a1=Author.objects.get(id=2)
    b1.authors.add(a1)   #可以直接添加obj
    b1.authors.add(3)    #可以直接添加id
    
    au_list=Author.objects.all()
    b1.authors.add(*au_list) #可以直接添加obj列表
    b1.authors.add(*[1,2,3]) #可以直接添加id列表

    反向添加:

    a2=Author.objects.get(id=1)
    b2=Book.objects.get(id=2)
    a2.book_set.add(b2)
    a2.book_set.add(3)
    
    a2.book_set.add(*Book.objects.all())
    a2.book_set.add(*[1,2,3,4])

    多对多删除:

    多对多的删除有两个参数:

    • clear() 清空数据
    • remove() 删除数据

    正向删除:

    # 删除id=1的书籍的所有作者
    b1=Book.objects.get(id=1)
    b1.authors.clear()   
    
    # 删除id=2的书籍的作者id=1,2,5
    b2=Book.objects.get(id=2)
    b2.authors.remove(1)
    b2.authors.remove(*[2,5]) 

    反向删除:

    # 删除作者id=1的所有书籍
    a1=Author.objects.get(id=1)
    a1.book_set.clear()

    ***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
  • 相关阅读:
    Working with File Contents and Files in Power Automate
    Quickly edit data in your Common Data Service
    Import Excel Data into a Model Driven PowerApp using Data Integration Project
    mybatis 的CRUD操作
    网络编程
    字节流、字符流
    File类、递归
    线程池
    等待与唤醒案例
    线程
  • 原文地址:https://www.cnblogs.com/guanfuchang/p/6486698.html
Copyright © 2020-2023  润新知