【问题标题】:Retrieving all posts by liked post's tags通过喜欢的帖子的标签检索所有帖子
【发布时间】:2023-04-06 15:52:01
【问题描述】:

我正在尝试在我的社交媒体 WebApp 中实现一项功能。我正在尝试根据用户喜欢的帖子获取所有标签帖子​​p>

例如(简要):-

假设,user_1 喜欢 post,并且该帖子包含 tags of #tag1 、 #tag2 、 #tag3。并且我正在尝试在包含用户喜欢的这些标签之一的页面中显示所有帖子。

models.py

class Post(models.Model):
    post_owner = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE)
    likes = models.ManyToManyField(User, related_name='post_like', blank=True)
    tags = TaggableManager()

views.py

def get_post(request,user_id):
    tags = Tag.objects.filter(post=id)
    posts = Post.objects.filter(likes__in=[user_id])

    context = {'posts':posts,'tagss':tagss}
    return render(request,'like_post.html', context)

like_post.html

{% for post in posts %}


{% for tag in post.tags.all %}

{{ tag }}

{% endfor %}


{% endfor %}

当我尝试在浏览器中运行它时,它只显示我完成的帖子及其标签。

我尝试了什么:-

  • 我也尝试了i_contains=tags,但这对我不起作用。

  • 我昨天注意到一个关于它的问题,但是这个问题也被删除了。

  • 我也试过这个:-

      def get_like_related_post(request,user_id):
          post = get_object_or_404(Post,post_owner=user_id)
          posts = Tag.objects.filter(tag_id_in=post.likes.all)
    

但它一直在显示

get() 返回了多个 Post -- 它返回了 6 个!

我是 Django 的新手,我不知道该怎么做。

任何帮助将不胜感激。

提前致谢

【问题讨论】:

  • 你能展示一下 lilke 模型吗?如果您已正确设置其他所有内容,Post.objects.filter(likes__id=user_id)Like.objects.filter(user__in=[user_id] 都应该为您完成工作。
  • 我没有likes model 喜欢的实例在Post Model
  • @Abhyudai,根据你的建议,它只会get posts which are created by me。但我正在尝试get posts by all tags which is liked by user

标签: python html django tags


【解决方案1】:

您可以尝试过滤taggit.models.Tag 以获取与用户喜欢的帖子相关的标签,然后过滤这些标签上的帖子。这将类似于(未经测试):

from taggit.models import Tag


def get_post(request,user_id):
    tags = Tag.objects.filter(post__likes=user_id).distinct()
    posts = Post.objects.filter(tags__in=tags).distinct()
    context = {'posts':posts,'tags':tags}
    return render(request,'like_post.html', context)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多