我的 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')
虽然它有效,但我有一种预感,这不是最简洁或最有效的方法。有什么更好的方法?