Я пытаюсь сделать следующее 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)
Как я могу выполнить этот запуск, не обращаясь к базе данных для каждого пользователя?