0
鑑於以下型號訂購型號:Django的ORM:使用額外的最大(日期時間字段,最大相關項目(時間字段))
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
之一被修改?
換句話說,我怎麼生成表示最大的Map's
自己modified_date
和其相關MapItems
和排序它的最新modified_date
而不是訴諸原始SQL或Python每個Map
的值?
我嘗試下面的查詢,但是當我查詢集被評爲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 points out,我的連接是不正確的。我已經固定的連接,現在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"}).
謝謝。 「last_updated」值現在正在出現,但它們都是相同的值。我已經確認了數據庫中的不同值。任何想法爲什麼這可能是? –
非常感謝。在''extra''調用之前加入''select_related''改變了結果的順序,但所有的值都保持不變。期待您的建議。同時,我會更新這個問題以反映你的第一個建議。 –
是的,'select_related'實際上並不相關,因此我的刪除。它遵循錯誤方向的關係。 –