а связь manytomany из моделей не подойдет?
Я про нее и говорю, но промежуточную таблицу всегда лучше задавать явно, и указывать её через through. Тогда ты сможешь её контролировать и например, навесить составной индекс. Если этого не делать, джанга всё равно её сделает неявно, но назовёт её и поля внутри обзовёт так, как ей хочется.