Django——ContentType定义公共字段
场景
现有需求,为多个模型增加一个阅读量的字段,就是一个时效的cookie用户,阅读过一篇博客,阅读量会+1
思路
想想其实也不难,就是为需要记录阅读量的模型增加一个字段,设置一个+1的逻辑,但是难点在如果这样的模型很多呢,每一个都写一遍吗?
很明显这是不现实的,我们需要的是一个公共的模型,用它去关联我的模型表,只定义一次,需要此功能时,我就创建一条这样的模型配置项,
如此说来,如何创建一个公共模型呢,这就需要用到ContentType了
实现
定义模型
read_num
:阅读数量,不用解释content_type
:外键关联ContentType,这就是公共表,他就是所有模型的模型集合object_id
:关联的id,与前面的关联模型,就能唯一定位到一条数据- 然后使用
GenericForeignKey
将content_type和object_id生成关联关系
效果
注册到django-admin后台以后,效果如下