Django:使用反向外键按Latest()过滤

时间:2018-07-05 20:16:27

标签: python django django-queryset

我正在尝试提高以下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)

如何在不访问每个用户数据库的情况下运行此程序?

0 个答案:

没有答案