我的数据模型中有一些我需要的东西,但我不确定我需要做什么。我需要一些输入来帮助我思考这个问题。
首先是一般情况。我有四个模型 A、B、C、D。A 与其余模型之间存在一对多关系(A 可以有任意数量的 B、C、D)。B、C、D 每一个后继都有一个一对多(B 可以有任意数量的 C,等等)。这允许构建各种层次结构,例如,A 实例可以有任意数量的 B,每个 B 和任意数量的 C,每个 C 和任意数量的 D,或者 A 实例可以只由任意数量的 D 元素构成,而没有中间的 B 或 C。
使用具体术语,我有可以包含部分、字段和元素的调查。调查可能由具有自己的字段的部分构成,每个字段具有许多元素,或者只是具有一堆元素的调查或具有元素字段的调查。
所以,我的主要问题是当有任意数量的干预 B 或 C 时如何为 A 列出 D。如何通过干预模型访问?即使关系不是直接的,我也需要获取 D 元素。默认情况下,A.Bs.Cs.Ds 在 sqlalchemy 中不是一个有效的东西(我可以确定),所以我需要设置“某事”来做到这一点,但我现在不知道这个“某事”是什么.
编辑:
我可以做一个列表理解
[x.Ds for x in A.Cs]
这是一个开始,但要视情况而定。无论中间关系如何,我都想将其设置为在 A 上返回 Ds。
我在每个模型中都建立了一个方法,我可以在需要时将 D 元素传递给 A,所以我现在已经解决了它,但不是最佳解决方案。