模板中的数据



我需要你的支持。我有两个模型Author和Post,我想在模板中显示特定作者的数据。我想显示特定作者的帖子,以及该作者的信息(first_name和last_name)。在我的视图文件中,我创建了一个方法,有2个查询集。其中一个QuerySet在Post表中查找特定Author的帖子,另一个查询集在Author表中查找帖子的Author所有者的信息。

我的问题,我能做到这一点只有一个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 %}

你可以这样做:

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 %}

相关内容

  • 没有找到相关文章

最新更新