Django——ContentType定義公共欄位
阿新 • • 發佈:2021-06-20
目錄
場景
現有需求,為多個模型增加一個閱讀量的欄位,就是一個時效的cookie使用者,閱讀過一篇部落格,閱讀量會+1
思路
想想其實也不難,就是為需要記錄閱讀量的模型增加一個欄位,設定一個+1的邏輯,但是難點在如果這樣的模型很多呢,每一個都寫一遍嗎?
很明顯這是不現實的,我們需要的是一個公共的模型,用它去關聯我的模型表,只定義一次,需要此功能時,我就建立一條這樣的模型配置項,
如此說來,如何建立一個公共模型呢,這就需要用到ContentType了
實現
定義模型
read_num
:閱讀數量,不用解釋content_type
:外來鍵關聯ContentType,這就是公共表,他就是所有模型的模型集合object_id
:關聯的id,與前面的關聯模型,就能唯一定位到一條資料- 然後使用
GenericForeignKey
將content_type和object_id生成關聯關係
效果
註冊到django-admin後臺以後,效果如下