django組件之contenttype
阿新 • • 發佈:2018-12-12
.com 圖片 技術分享 表設計 數據庫表結構 field auto 分享 創建表
方式1:適用於1張表和另一張表要關聯的時候。
1.路飛學成表設計:
2.將2個價格策略表合並1張表。
3.如果再加一張表,那價格策略表的表結構會發生改變。 這樣不合理的,我們的表結構一般設計完就不會改變。
方式2:適用於1張表和多張表關聯的時候。
4.接下來換一種方式。表名+id 數據庫表結構不會改變。
5.創建一個新項目
6.創建表
方式3:ContentType組件
7.settings.py
8.
- from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation
- content_type = models.ForeignKey(ContentType, verbose_name="關聯的表名稱")
- object_id = models.IntegerField(verbose_name="關聯的表中的數據行ID")
9.假設,表數據很多,有個關聯表的名字改了,需要改所有的數據很麻煩。那就再創建一張表,專門存放表名字。
10. 第三張表不用自己創建 ContentType 組件已經幫我們創建好了,專門用來存放表名字。
11.生成表,查看表數據
12.添加表數據
普通課程表數據
學位課程表數據
13. 問題1.為學位課“python全棧”添加一個價格策略:一個月9.9
urls.py
views.py
GenericForeignKey:快速實現content_type操作
不生成數據庫,幫助你快速實現content_type操作。 content_object = GenericForeignKey(‘content_type‘,‘object_id‘)
1.學位課表id=8 書id=1(title=‘python全棧‘) 添加了3個價格。
運行結果:
查看價格策略表數據
2.學位課表id=8 書id=1(title=‘python全棧‘) 添加了3個價格。
運行結果:
3.根據課程ID獲取課程,並獲取讀取課程的所有價格策略。
不生成數據庫,僅用於反向查找 。price_policy_list = GenericRelation("PricePolicy")
models.py
views.py
小結:
content-type Django內置的一個組件,幫助開發者做連表操作。【混搭】
django組件之contenttype