The code for this labels system is attached. Any item can have an arbitrary number of labels on them. Usage is simple: in your model import the labels model ("from django.models.labels import Label" if you don't change the package name) and then add this line to the view:
labels = meta.ManyToManyField(Label, null=True, blank=True)
And you're done. If you install the urls for this you will also be able to get a listing of all items for a given label with the url /labels/<label_id>/ and it will list them in categories. /labels/ will list all the labels in the system.