Django ValueError: Cannot use QuerySet for "": Use a QuerySet for "User"
Django ValueError: Cannot use QuerySet for "": Use a QuerySet for "User"
我正在 CS50w 中处理一个项目,我必须显示我关注的用户的帖子,但我收到以下错误
ValueError: Cannot use QuerySet for "Following": Use a QuerySet for "User".
models.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)
感谢任何帮助。
尝试使用这个,它可能会有所帮助
# Gets all the posts from the users the current user is following
followings_usernames = list(Following.objects.filter(user=request.user).values_list('user', flat=True))
posts = Post.objects.filter(user__in=followings_usernames)
您可以通过Post.user
字段通过反向关系(followers
)基于字段(Following.user
)进行过滤:
posts = Post.objects.filter(user__followers__user=request.user)
有关 lookups that span relationships 以及双下划线分隔模型和字段的用法,请参阅 Django 文档。
我正在 CS50w 中处理一个项目,我必须显示我关注的用户的帖子,但我收到以下错误
ValueError: Cannot use QuerySet for "Following": Use a QuerySet for "User".
models.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)
感谢任何帮助。
尝试使用这个,它可能会有所帮助
# Gets all the posts from the users the current user is following
followings_usernames = list(Following.objects.filter(user=request.user).values_list('user', flat=True))
posts = Post.objects.filter(user__in=followings_usernames)
您可以通过Post.user
字段通过反向关系(followers
)基于字段(Following.user
)进行过滤:
posts = Post.objects.filter(user__followers__user=request.user)
有关 lookups that span relationships 以及双下划线分隔模型和字段的用法,请参阅 Django 文档。