我试着做以下事情
get_queryset
效率更高,但我不知道怎么去。
我需要一个访问列表,每个访问都是用户的第一个访问。以下方法有效,但效率极低:
模型:
class User(models.Model):
...
class Visit(models.Model):
user = models.ForeignKey(User, related_name='visit_set')
class Meta:
get_latest_by = 'date'
...
VIEW
class SomeListView(ListView):
# Get a queryset of visits, each is a first() for a user.
def get_queryset(self):
users = User.objects.filter(visit_set__isnull=False)
visit_ids = [u.visit_set.earliest().id for u in users]
return Visit.objects.filter(id__in=visit_ids)
如何在不为每个用户命中数据库的情况下运行此操作?