Django中怎么实现一对多、多对多的外键查询
Admin 2022-06-28 群英技术资讯 988 次浏览
今天这篇我们来学习和了解“Django中怎么实现一对多、多对多的外键查询”,下文的讲解详细,步骤过程清晰,对大家进一步学习和理解“Django中怎么实现一对多、多对多的外键查询”有一定的帮助。有这方面学习需要的朋友就继续往下看吧!class Publish(models.Model):
id = models.AutoField(primary_key=True, auto_created=True)
pname = models.CharField(max_length=40)
city = models.CharField(max_length=50)
def __str__(self):
return self.pname
class Author(models.Model):
id = models.AutoField(primary_key=True, auto_created=True)
aname = models.CharField(max_length=10)
def __str__(self):
return self.aname
class Book(models.Model):
id = models.AutoField(primary_key=True, auto_created=True)
bname = models.CharField(max_length=30)
price = models.IntegerField()
publish = models.ForeignKey(Publish, on_delete=models.CASCADE)
author = models.ManyToManyField(Author)
def __str__(self):
return self.bname
通过类属性进行查询
# get方法的到的结果是一个对应类的对象 # 查询某本书的出版社名字 book = Book.objects.get(id=1) book.publish.pname # 查询某出版社下面有多少本书 # 此处的book是Book这张表的表名的小写(必须是小写)加上_set pub = Publish.objects.get(id=1) pub.book_set.all()
通过Django的双下划线(__)来进行查询
# 通过出版社的相关信息进行查询某一本书
Book.objects.filter(publish__city='北京')
Book.objects.filter(publish__id=1)
# 通过书籍的相关信息进行查询其出版社
# 此处的book是Book这张表的表名的小写(必须是小写)
Publish.objects.filter(book__id=1)
# 在values以及values_list中使用(必须加引号)
# 通过书籍的相关信息进行查询其出版社
# values得到的结果是一个内部是字典的查询集
Book.objects.filter(id=1).values('publish__pname')
# values__list得到的结果是一个内部是元祖的查询集
Book.objects.filter(id=1).values_list('publish__pname')
# 通过出版社的相关信息进行查询某一本书
Publish.objects.filter(id=1).values('book__bname')
Publish.objects.filter(id=1).values_list('book__bname')
在使用多对多时,Django会自动创建额外的一张表来存储其相对关系。这里额外的一张表的表名是blogs_book_author。
# 通过作者的相关信息查询其某一本书(返回的内部是Book的对象的查询集)
Book.objects.filter(author__id=1)
Author.objects.filter(id=1).values('book')
# 查询某一本书对应的作者有哪些(返回的内部是Author的对象的查询集)
Author.objects.filter(book__id=1)
Book.objects.filter(id=1).values('author')
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的是用python实现文字版购物车功能的介绍。实现需求,效果及代码如下,是比较简易的效果,对大家学习和理解购物车功能的实现有一定的价值,因此分享给大家做个参考,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
在python中,有些需求需要我们去除指定字符,那么如果想要去除头尾的指定字符,有什么办法呢?下面给大家介绍三个函数,strip()、lstrip()、rstrip()。
大家好,本篇文章主要讲的是Pandas按周/月/年统计数据介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
getattr是python里的一个内建函数getattr()这个方法最主要的作用是实现反射机制。也就是说可以通过字符串获取方法实例。这样,你就可以把一个类可能要调用的方法放在配置文件里,在需要的时候动态加载。python里面跟getattr相关的有hasattr,setattr,delattr ,那么我们通过下面的例子,来详细的说说他们的用法。1classXiaorui:2
关于python中迭代器,生成器介绍的文章不算少数,有些写的也很透彻,但是更多的是碎片化的内容。本篇尝试用系统的介绍三者的概念和关系,需要的可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008