django - 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)
任何帮助表示赞赏。
解决方案
Following.user
您可以通过字段的反向关系 ( followers
)基于字段 ( ) 进行过滤Post.user
:
posts = Post.objects.filter(user__followers__user=request.user)
有关跨越关系的查找以及使用双下划线分隔模型和字段,请参阅 Django 文档。
推荐阅读
- c# - 逆向工程中的 EntityFarmeworkCore 支架错误
- can-bus - J1939 与 CANBus
- node.js - 有没有办法在特定字段的值范围内聚合两个集合?
- python - Tkinter:在顶层窗口上使用 ttkthemes
- reactjs - Material UI 自定义类后面的属性
- ios - 在 iOS 14 上的 SwiftUI 中显示两次视图
- scala - 如何作为任务的结果返回空向量?
- cloud - Openstack多站点云编排
- javascript - Pug / Jade:在 list-group-item 内容之前添加 font-awsome 按钮
- elasticsearch - 从远程服务器向 Elasticsearch 传递数据