首页 > 解决方案 > Django ValueError:不能为“”使用查询集:为“用户”使用查询集

问题描述

我正在 CS50w 中的一个项目中工作,我必须显示我正在关注的用户的帖子,我收到以下错误

ValueError:无法将 QuerySet 用于“以下”:将 QuerySet 用于“用户”。

模型.py:

class Post(models.Model):
    """Tracks all the posts"""
    text = models.TextField(max_length=256)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date_posted = models.DateTimeField(auto_now_add=True)

class Following(models.Model):
    """Tracks the following of a user"""
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    following = models.ForeignKey(User, on_delete=models.CASCADE, related_name="followers")

这就是我试图检索我关注的用户的帖子的方式: views.py

# Gets all the posts from the users the current user is following
followings_usernames = Following.objects.filter(user=request.user)
posts = Post.objects.filter(user=followings_usernames)

任何帮助表示赞赏。

标签: djangocs50

解决方案


Following.user您可以通过字段的反向关系 ( followers)基于字段 ( ) 进行过滤Post.user

posts = Post.objects.filter(user__followers__user=request.user)

有关跨越关系的查找以及使用双下划线分隔模型和字段,请参阅 Django 文档。


推荐阅读