外键不在模板中呈现

时间:2017-01-18 21:37:48

标签: python django django-templates

我正在构建一个评论系统,它运行正常,但我现在正在尝试整合投票。所以我制作了另一个模型来处理它,我尝试使用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 %}

1 个答案:

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