Django Paginator 为每个项目附加额外数据
Django Paginator append extra data for each item
我将如何更改我的代码以向从分页器返回的每个 post 添加一个 liked
项。这是我的代码,但它 returns 是一个列表,我无法检查它是否在我的模板中 .has_next
因此我的无限滚动不起作用。
try:
posts_given = paginator.page(page)
except PageNotAnInteger:
posts_given = paginator.page(1)
except EmptyPage:
posts_given = paginator.page(paginator.num_pages)
results = []
for post in posts_given.object_list:
liked = like_post.objects.filter(user=request.user, post=post)
results.append((post, liked))
posts_given = results
为什么要这样加赞?会产生n+1个查询问题。学习模型关系。然后您可以使用 prefetch_related
在您的帖子结果中加载您的 liked
。
参考:https://docs.djangoproject.com/en/3.0/ref/models/querysets/#prefetch-related
我将如何更改我的代码以向从分页器返回的每个 post 添加一个 liked
项。这是我的代码,但它 returns 是一个列表,我无法检查它是否在我的模板中 .has_next
因此我的无限滚动不起作用。
try:
posts_given = paginator.page(page)
except PageNotAnInteger:
posts_given = paginator.page(1)
except EmptyPage:
posts_given = paginator.page(paginator.num_pages)
results = []
for post in posts_given.object_list:
liked = like_post.objects.filter(user=request.user, post=post)
results.append((post, liked))
posts_given = results
为什么要这样加赞?会产生n+1个查询问题。学习模型关系。然后您可以使用 prefetch_related
在您的帖子结果中加载您的 liked
。
参考:https://docs.djangoproject.com/en/3.0/ref/models/querysets/#prefetch-related