Django 使用外键从数据库中获取数据

Django getting data from database using foreign key

我正在开发一个 django 博客应用程序,我想通过其他数据库的外键访问数据库的所有字段。

class User(AbstractUser):
    about_user = models.TextField(("Profile"),blank = True)

    def __str__(self):
        return self.username
    

class Post(models.Model):
    author = models.ForeignKey("account.User",on_delete=models.CASCADE)
    status = models.BooleanField(("Status"),default = False)

现在我想从post访问用户数据库的所有数据,比如

posts = Post.objects.filter(status = True)
posts.author.about_author
要么
用户 = User.objects.filter(用户名 = post.author)
user.about_author

我在我的模板中尝试的是 post 的所有内容将显示,然后我想要 about_author(无论谁写了 post)。有点像 Whosebug显示每个问题。

在此先致谢,如有任何建议,我们将不胜感激。

您使用以下方法获取 Posts:

posts = Post.objects.filter(<b>status=True</b>)

但是这样写是没有意义的:

posts.author

因为 postsQuerySet(所以是 集合 Post,而不是一个。

您可以枚举 posts,然后显示所有 Post 个对象的 .author

for <strong>post in posts</strong>:
    print(<strong>post</strong>.author.about_user)

或在模板中使用:

{% for <strong>post in posts</strong> %}
    {{ post<strong>.author.about_user</strong> }}
{% endfor %}

您可以通过以下方式在同一查询中获取所有 User 来提高效率:

posts = Post.objects.filter(status=True)<b>.select_related('author')</b>