我有一個Read
模型是與Article
模型相關。我想要做的是製作一個查詢集,其中的文章是唯一的,並且由date_added
訂購。由於我使用的是postgres,我傾向於使用.distinct()
方法並指定article
字段。像這樣:Django .order_by()與.distinct()使用postgres
articles = Read.objects.order_by('article', 'date_added').distinct('article')
但是,這並沒有給出預期的效果,並且按照它們創建的順序對查詢集進行排序。我知道Django文檔中關於.distinct()
和.order_by()
的注意事項,但是我不認爲它適用於此,因爲它提到的副作用是將會有重複,而我沒有看到它。
# To actually sort by date added I end up doing this
articles = sorted(articles, key=lambda x: x.date_added, reverse=True)
此執行之前,我確實需要它,可能會變得非常慢,如果有大量記錄整個查詢。我已經使用select_related()
進行了優化。
是否有更好,更有效率的方式來創建具有唯一性的相關模型和order_by日期的查詢?
UPDATE 輸出將理想地讀實例的查詢集,其中它們的相關文章是在查詢集獨特和僅使用Django的ORM(即排序在python)。
你運行的是什麼版本的Django?將參數傳遞給'distinct'只能用於1.4+ –
1.4並使用postgres,它的工作原理 – ender