多对多数据模型是个比较复杂的数据模型,初学的朋友,可能会被这个东西绕晕。
分享这个这个查询小例子,希望可以帮助理解。
我们通过下面这个模型类创建了多对多数据库表,并且添加了数据
接下来,我们进行查询操作
1、正向查询
语法:
author.books.all()
author.books.filter()
我想查某个作者的所有书籍,
比如我查name=gao的这个作者的书籍
author1=author.objects.filter(name=’gao’)
这样就获取到一个objects
接下来查他名下的书
直接使用author1.books.all()查询就会报错
为什么?
因为我们使用objects.filter()方法得到的是一个QuerySet,就是查询结果集合。
正确的查询方法如下
author1[0].books.all()
这样查出来的结果同样是Queryset集合。
我们要查看书名,还需要像下面这样遍历一下
2、反向查询
通过book来查author,也就是通过书名来查作者
语法:
book.author_set.all()
book.author_set.filter()
比如我想查“糖果屋”这本书的作者是谁
先获取到这本书的objects
b5=Book.objects.filter(title=’糖果屋’)
接下来查询
两种写法
注意,这里的author_set中的author一定是小写,如果用大写的话,就会出错。
又搞到了深更半夜了。
希望本文 对你有帮助吧。
标签: