可以使用distinct()
方法来从查询集中获取不重复的Django对象。 distinct()
方法根据查询集中的字段进行去重,并返回一个新的查询集。
以下是一个示例代码:
from django.db.models import F
# 假设有一个模型类叫做Book
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
# ...
# 获取不重复的Book对象,按照最新的排序
latest_books = Book.objects.order_by('-id').distinct('title')
# 打印结果
for book in latest_books:
print(book.title, book.author)
在上面的代码中,我们首先使用order_by()
方法将查询集按照最新的排序(以id
字段为例,你可以根据自己的需求选择排序字段),然后使用distinct()
方法将查询集根据title
字段进行去重。
请注意,distinct()
方法只能应用在使用values()
或者values_list()
方法返回的查询集上,因此在示例代码中我们没有使用这两个方法。
这样就可以从查询集中获取不重复的Django对象了。