- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的数据模型中有一些我需要的东西,但我不确定我需要做什么。我需要一些意见来帮助我思考这个问题。
首先是一般情况。我有四个模型 A、B、C、D。A 与其余模型之间存在一对多关系(A 可以有任意数量的 B、C、D)。 B、C、D 每个后续都有一对多(B 可以有任意数量的 C 等)。这允许构建各种层次结构,例如。 G。 A 实例可以有任意数量的 B,每个 B 可以有任意数量的 C,每个 B 可以有任意数量的 D,或者 A 实例可以仅由任意数量的 D 元素构成,没有中间的 B 或 C。
使用具体术语,我的调查可以包含部分、字段和元素。调查可能由各个部分组成,每个部分都有自己的字段,每个字段都有许多元素,或者只是一个包含一堆元素的调查或一个包含多个元素字段的调查。
所以,我的主要问题是,当存在任意数量的干预 B 或 C 时,如何为 A 列出 D。如何通过干预模型进行访问?即使关系不直接,我也需要获取 D 元素。默认情况下,A.Bs.Cs.Ds 在 sqlalchemy 中不是有效的东西(我可以确定),所以我需要设置“某些东西”来执行此操作,但我目前不知道这个“某些东西”是什么.
编辑:
我可以进行列表理解
[x.Ds for x in A.Cs]
这是一个开始,但要具体情况而定。我想将其设置为在 A 上返回 D,无论中间关系如何。
我在每个模型中构建了一个方法,可以在需要时将 D 元素传递给 A,所以我现在已经解决了它,但这不是最佳解决方案。
最佳答案
不要通过 python 关联获取 Ds 对象,而是要求 SQLAlchemy 在数据库中查询这些对象。
如果您在 D 模型中有 3 个外键(分别指向 C、B 和 A)——这就是我从您的帖子中推断出来的——,那么您只需使用连接即可获取与 A 相关的 D 对象:
包含部分、字段和元素的调查的 Ds:
ds1 = session.query(D).join(C, D.c_id == C.id).join(B, C.b_id == B.id).join(A, B.a_id == A.id).filter(A.id = some_a_id).all()
包含字段和元素的调查的 Ds:
ds2 = session.query(D).join(C, D.c_id == C.id).join(A, C.a_id == A.id).filter(A.id = some_a_id).all()
仅包含元素的调查的要点:
ds3 = session.query(D).join(A).filter(A.id = some_a_id).all()
在这些查询中,a_id
、b_id
和 c_id
是将模型链接在一起的外键的名称。 some_a_id
只是您感兴趣的调查的 ID。
如果您想了解 A 的所有 D,无论是否存在中间模型,您只需将三个列表附加在一起即可:
所有 D
ds = ds1 + ds2 + ds3
关于python - sqlalchemy/sql : cross model relationships, 从 'cousin' 模型获取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477437/
我正在尝试自己编译跨平台工具链。 当我编译 binutils-2.22 时,它成功了,但为什么会出现“检查我们是否正在交叉编译...否”?我想应该是"is",对吧? 我的主机是运行 ubuntu 的
设置: 有远程测量站,有集中收集/处理/呈现服务器(带有网络服务器),还有观测站,为客户显示收集到的数据。 这些观测站由简单的嵌入式计算机组成,配备网络浏览器,以信息亭模式工作,每个观测站显示来自中央
我对 Spark 和 Scala 很陌生,我正在编写 Spark SQL 代码。我可以在我的逻辑中应用 CROSS JOIN 和 CROSS APPLY。在这里,我将发布必须转换为 Spark SQL
警告是: jquery-1.9.1.js:8526 跨源读取阻止 (CORB) 阻止跨源响应 https://www.metaweather.com/api/location/search/?quer
我正在尝试对用户进行身份验证,但由于Cross-Origin Read Blocking (CORB) blocked 问题我的 login.ts 代码是 if (this.plugins.isOnl
这是我的表格 public class TaskForm extends WebForm { public TaskForm(){ this(new TaskModel());
首先,对不起我的英语语言不好,我是初学者程序员。在我的项目中,我使用线程类,但完成后我看到了这个异常: Cross-thread operation not valid: Control 'lblp4
我目前正在为一个项目开发前端(VueJS),为了测试我的登录和注册逻辑,我使用 laravel 作为后端,尽管我们实际上将使用 springboot 作为后端。我在桌面上编码,一切正常。所以我开始使用
我一直认为,就主要浏览器在不同平台上的渲染而言,唯一的区别是操作系统的底层字体渲染技术,其他一切都依赖于浏览器中包含的相同库。 就我的研究而言,前端开发人员要么相信,要么不相信。似乎我们可以选择任何一
我需要在我正在处理的网站中显示一些交互式(附加 DOM 监听器等和事件处理)矢量图形。 W3C 推荐了 SVG,尽管 Internet Explorer 支持仍然无法识别这种格式,这是必须的(对于公共
子域是否有跨域策略限制? 如果我在 paint.xxxx.com 上有申请这是处理来自 image.xxxx.com 的图像,有没有跨域问题? 我问这些问题,因为我正在考虑在子域上放置一个代理。 最佳
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
一个项目迫在眉睫,我将要编写的一些代码可能会部署在潜在客户碰巧拥有的任何硬件上。它是一个 24/7 全天候运行的业务应用程序,因此我设想大多数主机将是服务器类型的机器,但较小的客户端可能只有一台简单的
首先,我不反对Opera。似乎当我遇到跨浏览器问题并进行一些研究时,总能找到“解决办法”,但是随后我看到一条评论,说我正在查看的跨浏览器解决方案无法在Opera中使用,这是一种愚蠢的评论。 我应该在乎
作为优秀的开发人员,我们尽可能保持我们的代码符合标准,以帮助平台之间的移植。但是有哪些工具可以帮助我们以统一的方式跨多个平台构建代码。 *nix 家族有 make但 Windows 需要 nmake
我目前正在构建浏览器帮助对象。 的事情之一BHO要做的是绕过跨域策略进行跨站请求。 为此,我公开了 __MyBHONameSpace.Request使用 WebClient 的方法内部。 然而,我想到
我开发了一个 NP API 插件并正在使用它。我观察到以下两件事 当我第一次安装插件时,我需要重新启动我的 mac os 以加载插件。 每当我更新插件时,我都需要重新启动浏览器。 我想在不重新启动浏览
浏览器在接收到“足够”的数据后或数据停止流入后呈现内容(例如,达到内容长度)。 我要慢慢地将数据流式传输到浏览器;为此,我必须解决此数据缓存问题。 例如,不是发送 40 字节的 JavaScript,
我搜索了一些关于跨平台编程开发的文献,但没有找到真正好的东西。 我不是在寻找像 Java 那样的跨平台虚拟机。 有没有关于这方面的书籍或文献? 最佳答案 我会说这归结为: 不使用非标准的“标准库”功能
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
我是一名优秀的程序员,十分优秀!