首先,我相信这是一个简单的问题。我刚开始学习Django,像所有初学者一样,我想建立一个简单的博客。
我有一个简单的数据模型,一个帖子模型,它包含通过FK链接到用户的链接。
models.py
我想要一个页面,列出所有帖子以及创建帖子的人的用户名。我的当前视图如下所示:
views.py
我的模板 目前,它只显示与 ID 为 1 的用户名称相匹配的内容。
我应该如何修改我的views.py文件来确保我获取发布帖子的用户的名字和姓氏?
我有一个简单的数据模型,一个帖子模型,它包含通过FK链接到用户的链接。
models.py
class Post(TimeStampedActivate):
"""
A blog post
"""
title = models.CharField(max_length=255)
slug = models.SlugField()
excerpt = models.TextField(blank=True)
body = models.TextField()
publish_at = models.DateTimeField(default=datetime.datetime.now())
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=False, help_text='Is the blog post active?')
user = models.ForeignKey(User, related_name='post_user')
def __unicode__(self):
return self.title
我想要一个页面,列出所有帖子以及创建帖子的人的用户名。我的当前视图如下所示:
views.py
def index(request):
posts = Post.objects.filter(active=True)
user = User.objects.get(id=1)
return render(request, 'blog/index.html', {'posts': posts, 'user': user})
我的模板 目前,它只显示与 ID 为 1 的用户名称相匹配的内容。
{% for post in posts %}
<h2><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h2>
<p>{{ post.excerpt|truncatewords:30 }}</p>
<p>Posted by {{ user.first_name }} {{ user.last_name }}</p>
{% endfor %}
我应该如何修改我的views.py文件来确保我获取发布帖子的用户的名字和姓氏?
select_related
以防止每个帖子获取用户表信息时进行额外的数据库查询。 - Yuji 'Tomita' Tomita