1. 程式人生 > 其它 >Django——ContentType定義公共欄位

Django——ContentType定義公共欄位

目錄

場景

現有需求,為多個模型增加一個閱讀量的欄位,就是一個時效的cookie使用者,閱讀過一篇部落格,閱讀量會+1

思路

想想其實也不難,就是為需要記錄閱讀量的模型增加一個欄位,設定一個+1的邏輯,但是難點在如果這樣的模型很多呢,每一個都寫一遍嗎?
很明顯這是不現實的,我們需要的是一個公共的模型,用它去關聯我的模型表,只定義一次,需要此功能時,我就建立一條這樣的模型配置項,
如此說來,如何建立一個公共模型呢,這就需要用到ContentType了

實現

定義模型

  • read_num:閱讀數量,不用解釋
  • content_type:外來鍵關聯ContentType,這就是公共表,他就是所有模型的模型集合
  • object_id:關聯的id,與前面的關聯模型,就能唯一定位到一條資料
  • 然後使用GenericForeignKey將content_type和object_id生成關聯關係

效果

註冊到django-admin後臺以後,效果如下

使用

獲取值

功能實現