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()]' –