我正在使用 Django 开发 Web 服务,我需要对一个非常具体、复杂的关系进行建模,而我无法解决。
想象三个通用模型,我们称它们为 Site、Category 和 Item。每个站点包含一个或多个类别,但它可以通过两种可能的方式之一与它们相关:一种是“常见”类别,它们处于多对多关系:它们是预定义的,每个站点可以与零相关或更多类别,反之亦然。其他类型的类别是为每个站点单独定义的,其中一个此类类别仅“属于”该站点,而不属于其他类别;即它们是多对一的关系,因为每个站点可能有许多这些类别。
在内部,这两种类型的类别完全相同,只是与站点相关的方式不同。但是,它可以将它们分成两个不同的模型(可能有一个共同的父模型),但这只能解决我的一半问题:Item 模型与 Categories 是多对一的关系,即每个 Item 属于只有一个类别,理想情况下它不应该关心它与站点的关系。
另一种解决方案是允许两种不同类型的站点-类别关系共存(即在同一个类别模型上同时具有 ForeignKey 和 ManyToMany 字段),但这种解决方案感觉就像打开了另一罐蠕虫。
有没有人知道这个死胡同是否有第三种更好的解决方案?