我有一个这样的查询:
objs = MyModel.objects.filter(type__in=[1,2,3,4]).order_by('-created_at')
是否有一种方法可以通过在查询中添加条件来获取每种类型的第一个项目,而不是所有具有这些类型的项目?
是的,有手动的方法。
type_list = [1,2,3,4]
new_list = []
for each_type in type_list:
latest_obj = MyModel.objects.filter(type=each_type).order_by('-created_at').first()
new_list.append(latest_obj)
这个new_list包含每个类型的最新对象。
或
objs = MyModel.objects.filter(type__in=[1,2,3,4]).order_by('type', '-created_at').distinct('type')
Reference: Django distinct