Essa classe está perfeita, mas deveria ser utilizada em um dos M2M com o `through`:

https://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany