我正在构建一个评论系统,它运行正常,但我现在正在尝试整合投票。所以我制作了另一个模型来处理它,我尝试使用ForeignKey
配对它。不太熟悉ForeignKey
但我在这里看了一些其他答案,看看如何在模板中渲染它。我在下面的模板中尝试使用嵌套for循环,但{{ j.user }}
没有呈现任何内容。谁能告诉我我做错了什么?
models.py
class Comment(models.Model):
destination = models.CharField(default='1', max_length=12, blank=True)
author = models.CharField(max_length=120, blank=True)
comment_id = models.IntegerField(default=1)
parent_id = models.IntegerField(default=0)
comment_text = models.TextField(max_length=350, blank=True)
timestamp = models.DateTimeField(default=timezone.now, blank=True)
def __str__(self):
return self.comment_text
class CommentScore(models.Model):
user = models.ForeignKey(User)
comment = models.ForeignKey(Comment)
upvotes = models.IntegerField(default=0)
downvotes = models.IntegerField(default=0)
views.py
...
comment_list = Comment.objects.filter(destination=id)
score = CommentScore.objects.all()
context = {
'score': score,
'comment_list': comment_list,
}
return render(request, 'article.html', context)
模板
{% for i in comment_list %}
<div class='comment_div'>
<h3>{{ i.author }}</h3>
{% for j in comment_list.score_set.all %}
{{ j.user }} #nothing comes up
{% endfor %}
<p>{{ i.comment_text }}</p>
</div>
{% endfor %}
答案 0 :(得分:0)
当使用_set
时,反向关系查找,你必须提供完整的模型名称,你还必须指定这个相关模型列表中的哪个实例&#34; set&#34;是的,应该是
{% for j in i.commentscore_set.all %}
{% empty %}
No scores found
{% endfor %}
您可能还希望为外键设置related_name
comment = models.ForeignKey(Comment, related_name='scores')
...
{% for j in i.scores.all %}