Django模型 跨表

2021-09-13 02:12:51 字數 2011 閱讀 5201

1. 簡介

2. 字段

3. 多樣匹配

4. 多重跨表

django通過sql的關鍵字inner,為查詢提供了跨表延申。想要跨模型查詢,只需要相關模型的模型名加上連線符__(雙下劃線),直到達到需要的字段為止。

舉個栗子:1. 查詢男生報名課程;2. 查詢報名火遁課程的學生。

#1 查詢男生報名課程;

in [52]

: course.objects.

filter

(students__gender=1)

#查詢的是課程所以選course表,限定條件為男生,所以跨表字段 student__gender=1

out[52]

:《案情分析》:[名偵探柯南]

>

,《火遁》:[火遁卷軸]

>

]>

#2 查詢報名火遁課程的學生。

in [53]

: student.objects.

filter

(enroll__courses__name=

'火遁'

)#查詢的是學生,選student模型;限定條件是課程為火遁,student 和 course 表是多對多關係、又指定中間表為ebroll,所以跨表字段 enroll__courses__name='火遁'

out[53]

:id<

8>name[納魯淘]gender(男)age|

16|c_time:

2019-03

-2015:

28:16+

00:00>

]>

#因為多對多關係中可以通過模型名直接訪問關聯表管理器,所以2可以改為

in [54]

: student.objects.

filter

(course__name=

'火遁'

)

out[54]

:<

student:

id<

8>name[納魯淘]gender(男)age|

16|c_time:

2019-03

-2015:

28:16+

00:00>

]>

# 兩者一樣。

查詢學生柯南的學院

in [57]

: college.objects.

filter

(student__name=

'柯南'

)

out[57]

:《偵探學院》:[偵探大陸]

>

]>

查詢報名火遁相關課程的學生

in [61]

: student.objects.

filter

(course__name__contains=

'火遁'

)

out[61]

:<

student:

id<

8>name[納魯淘]gender(男)age|

16|c_time:

2019-03

-2015:

28:16+

00:00>

]>

查詢偵探學院學生報名的課程

in [63]

: course.objects.

filter

(students__college__name=

'偵探學院'

)

out[63]

:《案情分析》:[名偵探柯南]

>

]>

Django 教程 Django 模型

乙個django模組是內建的功能,django使用建立表,他們的田地,和各種約束。簡而言之,django models是與django一起使用的sql資料庫。sql 結構化查詢語言 很複雜,涉及許多不同的查詢,用於建立,刪除,更新或與資料庫有關的任何其他內容。django模型簡化了任務並將表組織到模...

Django 模型層 模型

django內建模型方法 乙個模型包含了資料的字段和操作方法,每個模型對映為一張資料庫中的表 person models.py from django.db import models class person models.model first name models.charfield max...

Django 根據已有表生成ORM模型

在實際開發中,有些時候可能資料庫已經存在了。如果我們用django來開發乙個 讀職的是之前已經存在的資料庫中的資料。那麼該如何將模型與資料庫中的表對映呢?根據舊的資料庫生成對應的orm模型,需要以下幾個步驟 1 django 給我們提供了乙個inspectdb的命令,可以非常方便的將已經存在的表,自...