我正在尝试返回单个查询集的第一个实例和最后四个实例。在这种情况下,对象实例是注释。
我尝试过first()和last(),负索引(不起作用),Q对象等。在任何地方都找不到答案。
class Thread(models.Model):
date_created = models.DateTimeField(...)
...
class Comment(models.Model):
thread = models.ForeignKey(Thread)
...
threads = Thread.objects.prefetch_related('comment_set').all()
我试图遍历模板中的每个线程,并仅返回前4个注释(如果queryset有足够的注释)。我不想将查询集变成一个列表。有任何想法吗?谢谢。
答案 0 :(得分:0)
颠倒顺序并切成前4个。您将需要在某个字段上使用order_by
,例如,如果Comment
模型具有一个date_created
字段:
comments_qs = thread.comment_set.all()
first4 = comments_qs.order_by("date_created")[:4]
last4 = comments_qs.order_by("-date_created")[:4]