我正在努力理解Django Intermediary Models的目的。
从概念上讲,它们似乎等同于UML类图中的association classes。我应该注意两者之间有什么根本区别吗?
尽管有明显的相似性,但我找到了几个解释中间模型目的的资源,但没有一个提到“关联类”,这让我有点怀疑。
答案 0 :(得分:0)
它们用于存储有关多对多关系的其他数据。我确信这是亵渎神灵,但我认为最好的例子来自Ruby on Rails guides,它使用患者和医生之间的联系。医生通过预约有很多病人;患者也有许多医生通过预约;但是你无法直接模拟这种关系,因为约会也有日期和时间。
我认为你在概念上是正确的,它们服务于与UML中的关联类类似的目的。
答案 1 :(得分:0)
这是在任何关系数据库中实现的多对多关系,它是关系数据库设计的基本部分。因此,我建议首先了解数据库设计原则,因为无论如何都要正确使用ORM,了解数据库的工作原理。
答案 2 :(得分:0)
你不太可能在Django文献中找到与UML图表的任何比较 - 根据我的经验,UML建模在Python世界中并不是一件大事。
但是看看你的图表,我同意这个概念看起来非常相似。不要忘记ORM就是这样,关系概念到对象的映射:在这种情况下,直通表映射始终以多对多关系创建的中间表。唯一的区别是,如果要向该关系添加额外信息(例如链接中的注册日期),则只需手动指定它。如果您不需要额外的字段,则不需要指定中间模型,但该表仍然存在,仅包含M2M关系每端的外键。