I’m trying to understand the purpose of Django Intermediary Models.
Conceptually, they seem to be equivalent to association classes in UML class diagrams. Is there any fundamental difference between the two that I should be aware of?
In spite of the apparent similarity, I’ve found several resources explaining the purpose of intermediary models, but none of them made any reference to “association classes”, which makes me somewhat suspicious.
You’re not likely to find any comparisons with UML diagrams in the Django literature – UML modelling isn’t really a big thing in the Python world, in my experience.
But looking at your diagram, I’d agree that the concept does seem very similar. Don’t forget that the ORM is just that, a mapping of relational concepts onto objects: in this case, the through table maps the intermediary table that is always created in a many-to-many relationship. The only difference is that you only need to specify it manually if you want to add extra information to that relationship, like the enrollment date in your link. If you don’t need the extra fields, you don’t need to specify the intermediary model, but the table still exists, containing just the foreign keys to each end of the M2M relationship.