开发者

Understanding Django's Intermediary Models

开发者 https://www.devze.com 2023-02-25 11:50 出处:网络
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 dif

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.


They're used to store additional data about a many-to-many relationship. I'm sure this is blasphemy, but I think the best example is from the Ruby on Rails guides, which uses the association between patients and doctors. A doctor has many patients through appointments; a patient has many doctors through appointments as well; but you can't model this relationship directly, because an appointment also has a date and time.

I think you are right that conceptually, they server a similar purpose to association classes in UML.


This is how many-to-many relation is to be implemented in any relational database, it is a fundamental part of relational database design. So I suggest to learn about database design principles first because knowing how database works is necessary for using ORM properly anyway.

wikipedia on Many-to-many

0

精彩评论

暂无评论...
验证码 换一张
取 消