首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django:如何从许多模型中按日期获取对象?

Django:如何从许多模型中按日期获取对象?
EN

Stack Overflow用户
提问于 2014-12-05 15:12:26
回答 1查看 65关注 0票数 2

3种不同的模型具有不同的日期时间域:

代码语言:javascript
复制
class ModelA(models.Model):
    # some fields here
    date = models.DateField()

class ModelB(models.Model):
    # some fields here
    date = models.DateField()

class ModelC(models.Model):
    # some fields here
    date = models.DateField()

我想使用日期字段(不管它们的类是什么)来获取最后50个对象。就目前而言,这是可行的,但正如你所看到的那样,我是以一种非常低调的方式来做的:

代码语言:javascript
复制
all_a = ModelA.objects.all()
all_b = ModelB.objects.all()
all_c = ModelC.objects.all()

last_50_events = sorted(
        chain(all_a, all_b, all_c),
        key=attrgetter('date'),
        reverse=True)[:50]

如何有效地做这件事。而不加载无用数据)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-05 15:23:10

简单的解决方案-我建议您-加载50个对象的每种类型,排序,得到前50个(加载3倍以上)

“适当的解决方案”不能在ORM中用当前模式实现。最简单的方法可能是在整个模型中添加带有日期和泛型关系的新模型。

理论上,您也可以使用联合查询和原始查询执行一些魔术操作,但是所有类似的操作都会因为手工处理而变得很脏。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27318951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档