19,django組件之contenttype(一)

  django組件之contenttype(一)

 方式1:適用於1張表和另外一張表要關聯的時候。

1.路飛學成表設計:python

2.將2個價格策略表合併1張表。數據庫

 

3.若是再加一張表,那價格策略表的表結構會發生改變。  這樣不合理的,咱們的表結構通常設計完就不會改變。django

 

 方式2:適用於1張表和多張表關聯的時候。

4.接下來換一種方式。表名+id   數據庫表結構不會改變。post

 

 

 5.建立一個新項目url

 

6.建立表spa

 

 

方式3:ContentType組件

7.settings.py設計

8.3d

from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation
from django.contrib.contenttypes.models import ContentType
 
    
content_type = models.ForeignKey(ContentType, verbose_name="關聯的表名稱")
object_id = models.IntegerField(verbose_name="關聯的表中的數據行ID")
 

 

 

9.假設,表數據不少,有個關聯表的名字改了,須要改全部的數據很麻煩。那就再建立一張表,專門存放表名字。blog

 

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內置的一個組件,幫助開發者作連表操做。【混搭】

 

 

相關文章
相關標籤/搜索