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显示每个问题。
在此先致谢,如有任何建议,我们将不胜感激。
您使用以下方法获取 Post
s:
posts = Post.objects.filter(<b>status=True</b>)
但是这样写是没有意义的:
posts.author
因为 posts
是 QuerySet
(所以是 集合 )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>
我正在开发一个 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显示每个问题。
在此先致谢,如有任何建议,我们将不胜感激。
您使用以下方法获取 Post
s:
posts = Post.objects.filter(<b>status=True</b>)
但是这样写是没有意义的:
posts.author
因为 posts
是 QuerySet
(所以是 集合 )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>