私のdjangoアプリには、投稿/返信の関係があるモデルがあり、最新の返信の時間で投稿を並べ替えようとしています。または、返信がない場合は、独自のタイムスタンプです。これは私が今持っているものです:
threads = ConversationThread.objects.extra(select={'sort_date':
"""select case when (select count(*) from conversation_conversationpost
where conversation_conversationpost.thread_id = conversation_conversationthread.id) > 0
then (select max(conversation_conversationpost.post_date)
from conversation_conversationpost where conversation_conversationpost.thread_id = conversation_conversationthread.id)
else conversation_conversationthread.post_date end"""}).order_by('-sort_date')
うまくいきますが、これが最も簡潔で効率的な方法ではないという予感があります。より良い方法は何でしょうか?