Use of string id prevents generic key relationships
The Badge model uses an string id (effectively a slug) as a unique identifier.
Unfortunately, this prevents any reference to badges using generic keys. This has become an issue (for example) when trying to use django-activity-stream, which allows triggering actions in reference to saved/modified objects).
Solution: Badges should use the django-standard numeric primary key with the badge-name being a slug field.