按创建帖子的用户对帖子进行分组
Grouping posts by the user who created them
我正在尝试在我的网站(社交媒体类型)上创建一个页面,其中的帖子将由创建它们的用户进行分组和显示。
我尝试创建一个 following
上下文项,然后通过该组中的每个用户访问帖子,但没有显示任何结果。
我还尝试过滤 following
中用户的帖子。但是,它没有显示任何结果。不知道自己是否正确使用了过滤功能
这是我的观点:
class CommunityListView(LoginRequiredMixin, ListView):
model = Post
template_name = 'community/community.html'
context_object_name = 'posts'
ordering = ['-date_added']
def get_context_data(self, **kwargs):
context = super(CommunityListView, self).get_context_data(**kwargs)
active_user = self.request.user
active_user_following = active_user.following.values_list('user_id', flat=True)
following_user_objects = []
context['following'] = following_user_objects
context['followed_user_pots'] = Post.objects.filter(user__in=following_user_objects)
for id in active_user_following:
followed = User.objects.get(id=id)
following_user_objects.append(followed)
return context
这是我的 HTML 代码:
{% for user in following %}
{{user}}
{% for post in user.post %}
{{post}}
{% endfor %}
{% endfor%}
以上HTML
显示的都是following
中用户的用户名。我需要通过其他方式访问这些帖子吗?
这是Post型号:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE, null=True)
post = models.CharField(max_length=200)
date_added = models.DateTimeField(default=timezone.now)
首先我认为在 values_list
中你必须输入 id
而不是 user_id
,因为你想获得以下用户的 id
。当您在 get_queryset
方法中获得查询逻辑时,这也是更好的做法。所以你不需要在上下文中添加 followed_user_pots
最好删除它,而是使用这段代码来获得你想要的东西。
def get_queryset(self):
qs = super().get_queryset()
active_user = self.request.user
active_user_following = active_user.following.values_list('id', flat=True)
return Post.objects.filter(user__id__in=following_user_objects)
在模板中,您可以通过遍历 object_list
来访问帖子
{% for post in object_list %}
{{post}}
{% endfor %}
我正在尝试在我的网站(社交媒体类型)上创建一个页面,其中的帖子将由创建它们的用户进行分组和显示。
我尝试创建一个 following
上下文项,然后通过该组中的每个用户访问帖子,但没有显示任何结果。
我还尝试过滤 following
中用户的帖子。但是,它没有显示任何结果。不知道自己是否正确使用了过滤功能
这是我的观点:
class CommunityListView(LoginRequiredMixin, ListView):
model = Post
template_name = 'community/community.html'
context_object_name = 'posts'
ordering = ['-date_added']
def get_context_data(self, **kwargs):
context = super(CommunityListView, self).get_context_data(**kwargs)
active_user = self.request.user
active_user_following = active_user.following.values_list('user_id', flat=True)
following_user_objects = []
context['following'] = following_user_objects
context['followed_user_pots'] = Post.objects.filter(user__in=following_user_objects)
for id in active_user_following:
followed = User.objects.get(id=id)
following_user_objects.append(followed)
return context
这是我的 HTML 代码:
{% for user in following %}
{{user}}
{% for post in user.post %}
{{post}}
{% endfor %}
{% endfor%}
以上HTML
显示的都是following
中用户的用户名。我需要通过其他方式访问这些帖子吗?
这是Post型号:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE, null=True)
post = models.CharField(max_length=200)
date_added = models.DateTimeField(default=timezone.now)
首先我认为在 values_list
中你必须输入 id
而不是 user_id
,因为你想获得以下用户的 id
。当您在 get_queryset
方法中获得查询逻辑时,这也是更好的做法。所以你不需要在上下文中添加 followed_user_pots
最好删除它,而是使用这段代码来获得你想要的东西。
def get_queryset(self):
qs = super().get_queryset()
active_user = self.request.user
active_user_following = active_user.following.values_list('id', flat=True)
return Post.objects.filter(user__id__in=following_user_objects)
在模板中,您可以通过遍历 object_list
{% for post in object_list %}
{{post}}
{% endfor %}