当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用django如何将来自不同模型的两个查询组合成一个查询?》经验,为你挑选了1个好方法。

在我的具体情况下,我有两种"消息",我需要检索和分页.

让我们省略细节,然后说第一种是在名为Msg1的模型中,另一种叫做Msg2

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

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

我需要保留查询的惰性.

简单的解决方案是list(query)查询并将它们组合在一个python列表中.但由于显而易见的原因,这是低效的.

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



1> Tom Leys..:

我建议你使用Model继承.

创建包含日期和标题的基本模型.如上所述,子类Msg1和Msg2关闭它.使用基本模型完成所有查询(填充页面),然后在最后一刻切换到派生类型.

继承的真正好处在于,django允许您在其他模型的外键中使用基本模型,因此您可以使整个应用程序更加灵活.在引擎盖下,它只是一个基本模型的表,每个子模型包含一对一键的表.


如果我的基类是抽象的怎么办?您可以显示一些代码示例吗?
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有