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的命令,可以非常方便的將已經存在的表,自...