I ran into a similar problem and forked django-taggit to add this functionality: https://github.com/professorplumb/django-taggit
You add attributes for a custom through or tag model like so:
article.topics.add('topic1', 'topic2', created_by=request.user)