我很难从Django中的基本DetailView引用我的ForeignKey。
我使用的型号:
class Posts(models.model):
url = models.URLField()
class Comment(models.model):
post = models.ForeignKey(Posts, related_name='comments', on_delete=models.CASCADE)
content = models.CharField(max_length=500, blank=False)
views.py:
class PostDetailView(DetailView):
model = Posts
context_object_name = 'posts'
我正在尝试引用我的帖子详细页面中的评论。
posts_details.html:
{% for comment in posts.comments.all %}
{{comment.content}}
{% endfor %}
我还尝试过将posts.comments.all更改为posts.coments_set.all,但仍然没有结果。
我觉得这是我错过的一件小事,但我想不通。
数据就在那里,它是用外键引用正确输入的,但我无法通过详细信息视图引用它。
使用答案编辑:
我可以通过将其添加到评论模型中来实现这一点:
def get_absolute-url(self):
return reverse('post_detail', kwargs={'pk': self.post.pk})
这让我可以通过以下循环访问post_detail.html中的帖子:
{% for comment in posts.comments.all %}
{{comment.content}}
{% endfor %}
class Posts(models.model):
url = models.URLField()
def get_all_comments(self):
return Comment.objects.filter(post=self.pk)
使用此方法,将返回的查询集添加到上下文中。
您的Posts模型没有注释字段。。。所以posts.comments.all总是空的。不幸的是,如果您试图访问模板标签中不存在的字段,则不会收到错误消息