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]如何有效地做这件事。而不加载无用数据)?
发布于 2014-12-05 15:23:10
简单的解决方案-我建议您-加载50个对象的每种类型,排序,得到前50个(加载3倍以上)
“适当的解决方案”不能在ORM中用当前模式实现。最简单的方法可能是在整个模型中添加带有日期和泛型关系的新模型。
理论上,您也可以使用联合查询和原始查询执行一些魔术操作,但是所有类似的操作都会因为手工处理而变得很脏。
https://stackoverflow.com/questions/27318951
复制相似问题