模板中的数据
Posted
技术标签:
【中文标题】模板中的数据【英文标题】:Data in templates 【发布时间】:2021-10-24 06:23:46 【问题描述】:我需要你的支持。 我有 2 个模型作者和帖子,我想在模板中显示特定作者的数据。我想显示特定作者的帖子,以及该作者的信息(名字和姓氏)。在我的视图文件中,我创建了一个带有 2 个查询集的方法。其中一个查询集在表中查找特定作者的帖子,另一个查询集在作者表中查找帖子的作者所有者的信息。
我的问题是,我可以只使用一个 QuerySet 吗?如果是,如何在模板中显示?
模型
class Autor(models.Model):
first_name = models.CharField(max_length=30, null=False, verbose_name='First Name')
last_name = models.CharField(max_length=30, null=False, verbose_name='Last Name')
class Post(models.Model):
autor = models.ForeignKey(Autor, on_delete=models.CASCADE)
post = models.CharField(max_length=200, null=False, verbose_name='Post')
VIEW.PY
def index(request):
autor = Autor.objects.filter(first_name='Peter').first()
autor_posts = Post.objects.filter(autor__first_name='Peter')
return render(request, 'posts.html', 'autor_posts': autor_posts, 'autor': autor)
POSTS.HTML
Author: autor.first_name , autor.last_name
Posts:
% for post in autor_posts %
<p> post.id , post.post </p>
<p></p>
% endfor %
【问题讨论】:
【参考方案1】:你可以这样做:
def index(request):
autor = Autor.objects.prefetch_related('post_set').filter(first_name='Peter').first()
return render(request, 'posts.html', 'autor': autor)
这仍然会执行两个查询,一个是获取autor
,另一个是预取autor
的所有相关post
。但好处是您不必手动编写单独的过滤器来获取autor
的帖子。
所以在你的模板中你可以这样做:
Author: autor.first_name , autor.last_name
Posts:
% for post in autor.post_set.all %
<p> post.id , post.post </p>
<p></p>
% endfor %
【讨论】:
以上是关于模板中的数据的主要内容,如果未能解决你的问题,请参考以下文章