gpt4 book ai didi

python - Django:如何从多个模型中按日期获取对象?

转载 作者:太空宇宙 更新时间:2023-11-04 05:56:50 25 4
gpt4 key购买 nike

3 个不同的模型具有不同的日期时间字段:

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 个对象。现在,它可以工作,但正如您所见,我正在以一种非常无用的方式进行操作:

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]

如何以一种有效的方式(即不加载无用数据)做到这一点?

最佳答案

简单的解决方案 - 我推荐你 - 加载每种类型的 50 个对象,排序,获取前 50 个(加载 3 倍以上)

“正确的解决方案”无法在 ORM 中使用您当前的模式实现。可能最简单的方法是添加具有日期和与整个模型的通用关系的新模型。

从理论上讲,您还可以使用联合查询和原始查询来施展魔法,但是像这样的所有东西对于复杂的手动处理来说都是肮脏的。

关于python - Django:如何从多个模型中按日期获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27318951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com