Django——ContentType定义公共字段

场景

现有需求,为多个模型增加一个阅读量的字段,就是一个时效的cookie用户,阅读过一篇博客,阅读量会+1

思路

想想其实也不难,就是为需要记录阅读量的模型增加一个字段,设置一个+1的逻辑,但是难点在如果这样的模型很多呢,每一个都写一遍吗?
很明显这是不现实的,我们需要的是一个公共的模型,用它去关联我的模型表,只定义一次,需要此功能时,我就创建一条这样的模型配置项,
如此说来,如何创建一个公共模型呢,这就需要用到ContentType了

实现

定义模型

定义模型

  • read_num:阅读数量,不用解释
  • content_type:外键关联ContentType,这就是公共表,他就是所有模型的模型集合
  • object_id:关联的id,与前面的关联模型,就能唯一定位到一条数据
  • 然后使用GenericForeignKey将content_type和object_id生成关联关系

效果

注册到django-admin后台以后,效果如下
效果

使用

获取值

获取值

功能实现

已读+1

原文地址:https://www.cnblogs.com/pywjh/p/14908809.html