您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:Django 外键查询的实现

51自学网 2021-10-30 22:27:38
  python
这篇教程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.pnameclass Author(models.Model):    id = models.AutoField(primary_key=True, auto_created=True)    aname = models.CharField(max_length=10)    def __str__(self):        return self.anameclass 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这张表的表名的小写(必须是小写)加上_setpub = 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')

到此这篇关于Django 外键查询的实现的文章就介绍到这了,更多相关Django 外键查询内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! 


Win10系统下Pytorch环境的搭建过程
备战618!用Python脚本帮你实现淘宝秒杀
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。