在Django中查找嵌套ORM中的数据
这是我的models.py文件,我想知道当前登录用户是否喜欢我的模板中的帖子。我在我的模板文件中这样做在Django中查找嵌套ORM中的数据,django,python-3.x,django-models,django-templates,django-views,Django,Python 3.x,Django Models,Django Templates,Django Views,这是我的models.py文件,我想知道当前登录用户是否喜欢我的模板中的帖子。我在我的模板文件中这样做 class Post(models.Model): POST_TYPE =( ("video","video"), ("pic","pic"), ) upload_by = models.ForeignKey(User,on_delete=models.CASCADE) caption = models.TextField()
class Post(models.Model):
POST_TYPE =(
("video","video"),
("pic","pic"),
)
upload_by = models.ForeignKey(User,on_delete=models.CASCADE)
caption = models.TextField()
post_type = models.CharField(max_length=100,choices=POST_TYPE)
media = models.FileField(upload_to='posts/')
created_at = models.DateTimeField(auto_now_add=True)
class PostLikes(models.Model):
post = models.ForeignKey(Post,on_delete=models.CASCADE)
like_by = models.ForeignKey(User,on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
但我知道这是错误的,有人能解决这个问题吗?
我想在我的模板中这样做
{% if request.user in i.postlikes_set.all%}
我认为在视图中检查用户是否喜欢
帖子
查看您的帖子,我认为您正在模板中显示一个帖子列表,其中每个项目都是用户喜欢或不喜欢的。您可以做的是在视图中用这些信息注释每篇文章,然后在模板中使用这些信息。例如
<a class="post-like-btn" href="#" {% if request.user in i.postlikes_set.all%} style="color: #e16a70;" {% else %} style="color:#b2b2b2 !important;" {% endif %}>
然后在模板中,您可以
#views.py
from django.db.models import OuterRef, Exists
def list_posts(request):
user = request.user
my_likes = PostLikes.objects.filter(
post = OuterRef('pk'),
like_by = user
)
posts = Post.objects.annotate(like_by_user=Exists(my_likes))
context = {'posts': posts}
return render(request, 'yourtemplate.html', context)
<a class="post-like-btn" href="#" {% if i.like_by_user %} style="color: #e16a70;" {% else %} style="color:#b2b2b2 !important;" {% endif %}