我正在尝试提高以下get_queryset
的效率,但是我不确定如何到达那里。
我需要访问列表,每个访问列表都是用户的第一个。以下方法有效,但效率极低:
models.py:
class User(models.Model):
...
class Visit(models.Model):
user = models.ForeignKey(User, related_name='visit_set')
class Meta:
get_latest_by = 'date'
...
views.py
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)
如何在不访问每个用户数据库的情况下运行此程序?