给定以下模型:
class BaseModel(models.Model):
modified_date = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Map(BaseModel):
...
class MapItem(BaseModel):
map = models.ForeignKey(Map)
...
如何构建我的 ORM 调用以Maps
按最后一次修改Map
它或其中之一进行排序MapItems
?
换句话说,如何在不使用原始 SQL 或 Python 的情况下为每个值生成一个值,该值Map
代表Map's
自己的最大值及其相关modified_date
的最新值并按其排序?modified_date
MapItems
我尝试了以下查询,但是在last_updated
评估我的 QuerySet 时这些值是空白的,我不太清楚为什么:
Map.objects.extra(select={
"last_updated": "select greatest(max(maps_mapitem.modified_date), maps_map.modified_date)
from maps_map join maps_mapitem on maps_map.id = maps_mapitem.id"}).
提前致谢。
编辑 0:正如Peter DeGlopper 指出的那样,我的加入不正确。我已经修复了连接,last_updated
现在值都相等而不是空白:
Map.objects.extra(select={
"last_updated": "select greatest(max(maps_mapitem.modified_date), maps_map.modified_date)
from maps_map join maps_mapitem on maps_map.id = maps_mapitem.maps_id"}).