Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django中查找嵌套ORM中的数据_Django_Python 3.x_Django Models_Django Templates_Django Views - Fatal编程技术网

在Django中查找嵌套ORM中的数据

在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()

这是我的models.py文件,我想知道当前登录用户是否喜欢我的模板中的帖子。我在我的模板文件中这样做

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 %}