sql – 使用django如何将来自不同模型的两个查询组合成一个查询?

前端之家收集整理的这篇文章主要介绍了sql – 使用django如何将来自不同模型的两个查询组合成一个查询?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的具体情况下,我有两种“消息”,我需要检索和分页.

我们忽略细节,只是说第一种是一个名为Msg1的模型,另一个叫做Msg2

这两个模型的领域是完全不同的,两个模型共有的唯一字段是“日期”和“标题”(当然,id).

我可以得到Msg1.objects.all()和Msg2.objects.all(),但我可以将这两个查询组合成一个查询,按日期排序,并分页

我需要保留查询的懒惰性质.

简单的解决方案是列出(查询)两个查询并将它们组合在一个python列表中.但由于明显的原因,这是无效率的.

我在模型和dp-api上查看了django引用,但似乎没有办法将不同模型/表的查询组合成一个.

解决方法

我建议你使用 Model inheritance.

创建一个包含日期和标题的基本模型.子类Msg1和Msg2如下所述.使用基本模型进行所有查询(填写页面),然后在最后一刻切换到派生类型.

关于继承的真正伟大的事情是,django然后允许你使用来自其他模型的外键的基本模型,所以你可以使你的整个应用程序更加灵活.在引擎盖下,它只是一个基础模型的表,每个子模型的表包含一对一的键.

猜你在找的MsSQL相关文章