【发布时间】:2012-09-10 17:48:57
【问题描述】:
我的数据模型中有一些我需要的东西,但我还不确定我需要做什么。我需要一些意见来帮助我思考这个问题。
首先是一般情况。我有四个模型 A、B、C、D。A 与其余模型之间存在一对多关系(A 可以有任意数量的 B、C、D)。 B、C、D 每一个后继都有一对多(B 可以有任意数量的 C,等等)。这允许构建各种层次结构,例如。 G。一个 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,所以我现在已经解决了它,但不是最佳解决方案。
【问题讨论】:
标签: python sql orm sqlalchemy datamodel