|  |      1xiaket      2011-10-12 22:35:56 +08:00 修改model的save方法吧 | 
|  |      3reorx      2011-12-06 19:47:48 +08:00 @xiaket 这样不大好,而且会使用到super这种奇技淫巧。最正确的处理方式是启用signal。其实它就是所谓的“触发事件”,任何Model的实例执行save后都会发出。 ref: https://docs.djangoproject.com/en/1.3/topics/signals/ | 
|  |      5reorx      2011-12-07 08:16:56 +08:00 @bindiry 呵呵,Django节点只有3个帖子,自然一眼就看到了。想起来当时在v2ex上发的第一个帖子也是关于Django的呢。 | 
|  |      6xiaket      2011-12-07 11:55:37 +08:00 @reorx signal我也用过, 个人感觉有点dark magic的味道, 让问题难以追踪. 倒是将这部分逻辑写在model的定义那儿, 一目了然. 我觉得这样更合理一点. 而且要说奇技淫巧, super远没有signal走得远. 我个人觉得signal更合理的应用方式是用来触发邮件啥的, 类似消息队列的触发等等. | 
|  |      7reorx      2011-12-07 20:24:09 +08:00 @xiaket 赞同,signal确实不怎么好用,而且会让逻辑变得分散而混乱。 super的用法一直存在争议,见这里:http://fuhm.net/super-harmful/ 所以我想Django设计signal的目的也许是为了避免开发者使用super而造成不可预见的奇怪报错,我自己在override诸如save之类的方法的时候就遇到过。当发现signal之后,下意识地觉得它更安全一些,没有进行严密的考证,见笑,以后仔细研究下两者的优劣之后再来讨论 :) |