django - Django. How to "join" two models that have foreignkeys to a third model?
问题描述
I'm learning Django and getting data from join tables is proving to be difficult. My models are:
class User(AbstractUser):
pass
class Post(models.Model):
username_p = models.ForeignKey("User", on_delete=models.CASCADE, related_name="user_p")
post = models.CharField(max_length=365)
like = models.PositiveIntegerField(default=0)
timestamp = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.username_p} posted {self.post} the {self.timestamp}, and the post has {self.like} likes"
def serialize(self):
return {
"id": self.id,
"username": self.username_p.username,
"post": self.post,
"like": self.like,
"timestamp": self.timestamp.strftime("%b %d %Y, %I:%M %p"),
}
class Follower(models.Model):
followername = models.ForeignKey("User", on_delete=models.CASCADE, related_name="follower")
followedname = models.ForeignKey("User", on_delete=models.CASCADE, related_name="followed")
def __str__(self):
return f"{self.followername} follows {self.followedname}"
I'm trying to join all tables to get all the posts (including username_p, post, like and timestamp) from all the followedname users that one followername user may have.
Any ideas on what query could work on my views.py?
解决方案
followednames = (f.followedname for f in Follower.objects.get(followername=***followername you want***))
posts = Post.objects.all().filter("username_p__in"=followednames )
推荐阅读
- azure-devops - Azure DevOps 存储库中的权限报告
- sass - 为什么sсss在继承模板时要在主类中加一个类?
- list - 列表数据按回 Flutter 后消失
- flutter - addPostFrameCallback 不能无条件调用,因为 Flutter 中的接收者可以为“null”
- export - 用于将结果(包括标头)导出到 .csv 的 SQL 命令
- javascript - 如何使用 html、javascript 和 java springboot 从 REST API 中的表中删除行?
- python-3.x - 用负值替换负数的会计符号
- python - 需要将 df.apply 的结果分配给两个新列
- html - 如何在 reactjs 中使用相同的导航栏来完成两个导航栏的工作?
- model-view-controller - 在位置 X 中找不到视图,虽然它在那里