次のモデルがあるとします。
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)
...
またはそのMaps
いずれかが最後に変更された時刻でソートするように ORM 呼び出しを構成するにはどうすればよいですか?Map
MapItems
言い換えれば、生の SQL や Python に頼らずに、独自Map
の最大値と関連する最新の値を表す値をそれぞれに生成し、それによって並べ替えるにはどうすればよいでしょうか?Map's
modified_date
modified_date
MapItems
次のクエリを試しましたが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.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"}).