2
考慮以下型號的最新資料:有效地選擇不同類別
class Data(Model):
created_at = models.DateTimeField()
category = models.CharField(max_length=7)
我想選擇所有類別的最新對象。
繼this question,我選擇了不同的類別,然後製作一個單獨的查詢爲他們每個人:
categories = Data.objects.distinct('category').values_list('category', flat=True)
for category in categories:
latest_obj = Data.objects.filter(category=category).latest('created_at')
這種方法的缺點是,它使大量的查詢(1爲不同的類別,然後對每個類別單獨查詢)。
有沒有辦法用單個查詢來做到這一點?
如果你不打算有一個分離的類別模型,你可以將Data.objects.all()分配給一個變量並運行一個函數來檢索每個類別的最新數據,這只是一個查詢 –
順便說一句,縮短你的當前代碼使用一個單獨的分類模型: '最新的obj = obj.data_set.latest()爲obj在Category.objects.all()如果obj.data_set.count()]' –