Tagulous provides two new model fields - tagulous.models.TagField and tagulous.models.SingleTagField, which you use to add tags to your existing models to make them tagged models. They provide extra tag-related functionality.

They can also be queried like a normal Django ForeignKey or ManyToManyField, but with extra query enhancements to make working with tags easier.

Tags are stored in tag model subclasses, which can either be unique to each different tag field, or can be shared between them. If you don't specify a tag model on your field definition, one will be created for you automatically.

Tags can be nested using tag trees. There is also support for database migrations.