Giving users a "reputation system" - Should I...?

django, python, web-applications

Solution

In Django, I'd suggest having a property on the User (or Profile) model that calculates a user's reputation on-demand. Then, cache the reputation with your caching framework and/or store to the database for fast retrieval.

This way, in addition to having the records of what impacts reputation, you can change your reputation criteria at will.

Problem

I'm thinking of adding a reputation system to my Django web application; the site is already being used so I'm trying to be careful about my choices. Reputation is generated in all actions that contribute to the site, similar to Stackoverflow's system. I know there are literally millions of ways of implementing this, and this is why I feel quite lost. Two alternatives I am not sure about are: - Keep track of reasons why reputation was incremented - Ignore reasons in order to reduce complexity of the site and overhead Would be happy with a few pointers, and directions. Would be very much appreciated!

Original source