最近有一个需求,通过django的admin后台,可以人工配置5张表的数据,这些数据进行一些业务规则处理后会统一成一份数据缓存在一个cache之中供服务端业务访问,因而任何一张表的数据更新(增、删、改),都要需要重新根据规则计算数据结果,并更新cache。
首先想到的方法就是覆盖每个表model子类中的save方法,在其中先调用父类的save方法走原有保存逻辑更新数据到数据库后,之后再单独调用一次cache的更新逻辑,这样每张表的任意数据被用户更新后,都将先触发model的数据库更新、而后执行cache的数据更新,其中Application表model的代码如下所示:
1 classApplication(models.Model):2 name = models.CharField(max_length=128, blank=False, verbose_name=u'应用名')3 description = models.TextField(blank=False, verbose_name=u'应用描述')4 status = models.IntegerField(verbose_name=u'状态', choices=APPLICATION_STATUS)5 mtime = models.DateTimeField(blank=False, verbose_name=u'修改日期', auto_now=True)6 ctime = models.DateTimeField(blank=False, verbose_name=u'创建日期', auto_now_add=True)7 classMeta:8 db_table = 'application'