【发布时间】: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。