Django 外鍵查詢(xún)的實(shí)現(xiàn)
創(chuàng)建三張表,詳情如下:
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一、一對(duì)多
通過(guò)類(lèi)屬性進(jìn)行查詢(xún)
# get方法的到的結(jié)果是一個(gè)對(duì)應(yīng)類(lèi)的對(duì)象# 查詢(xún)某本書(shū)的出版社名字book = Book.objects.get(id=1)book.publish.pname# 查詢(xún)某出版社下面有多少本書(shū)# 此處的book是Book這張表的表名的小寫(xiě)(必須是小寫(xiě))加上_setpub = Publish.objects.get(id=1)pub.book_set.all()
通過(guò)Django的雙下劃線(xiàn)(__)來(lái)進(jìn)行查詢(xún)
# 通過(guò)出版社的相關(guān)信息進(jìn)行查詢(xún)某一本書(shū)B(niǎo)ook.objects.filter(publish__city=’北京’)Book.objects.filter(publish__id=1)# 通過(guò)書(shū)籍的相關(guān)信息進(jìn)行查詢(xún)其出版社# 此處的book是Book這張表的表名的小寫(xiě)(必須是小寫(xiě))Publish.objects.filter(book__id=1)# 在values以及values_list中使用(必須加引號(hào))# 通過(guò)書(shū)籍的相關(guān)信息進(jìn)行查詢(xún)其出版社# values得到的結(jié)果是一個(gè)內(nèi)部是字典的查詢(xún)集Book.objects.filter(id=1).values(’publish__pname’)# values__list得到的結(jié)果是一個(gè)內(nèi)部是元祖的查詢(xún)集Book.objects.filter(id=1).values_list(’publish__pname’)# 通過(guò)出版社的相關(guān)信息進(jìn)行查詢(xún)某一本書(shū) Publish.objects.filter(id=1).values(’book__bname’) Publish.objects.filter(id=1).values_list(’book__bname’)二、多對(duì)多(返回的內(nèi)部是相關(guān)類(lèi)的對(duì)象的查詢(xún)集)
在使用多對(duì)多時(shí),Django會(huì)自動(dòng)創(chuàng)建額外的一張表來(lái)存儲(chǔ)其相對(duì)關(guān)系。這里額外的一張表的表名是blogs_book_author。
# 通過(guò)作者的相關(guān)信息查詢(xún)其某一本書(shū)(返回的內(nèi)部是Book的對(duì)象的查詢(xún)集)Book.objects.filter(author__id=1)Author.objects.filter(id=1).values(’book’)# 查詢(xún)某一本書(shū)對(duì)應(yīng)的作者有哪些(返回的內(nèi)部是Author的對(duì)象的查詢(xún)集)Author.objects.filter(book__id=1)Book.objects.filter(id=1).values(’author’)
到此這篇關(guān)于Django 外鍵查詢(xún)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Django 外鍵查詢(xún)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法2. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)3. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題4. IntelliJ IDEA設(shè)置默認(rèn)瀏覽器的方法5. Docker容器如何更新打包并上傳到阿里云6. VMware中如何安裝Ubuntu7. Springboot 全局日期格式化處理的實(shí)現(xiàn)8. python 浮點(diǎn)數(shù)四舍五入需要注意的地方9. idea配置jdk的操作方法10. JAMon(Java Application Monitor)備忘記
