我有一个表示文章的Django类。有时一篇文章评论了一篇或多篇其他文章,我在课堂上使用递归的多对多关系表示了这种关系,如下所示:
class Article(models.Model):
comments_on = models.ManyToManyField('self', blank=True)
我认为通过在comments_on字段中选择多篇文章,我已经在管理界面中成功地将文章相互关联。让我们说一篇文章(id1)评论另外两篇文章(id2和id3)。我不知道如何访问id1的comments_on属性,以便id2和id3出现在我的Django模板中。
我试过了:
{{ [instance of Article object].comments_on }}
但我得到的只是:
[name of my app].Article.None
我想知道(1)如何访问此属性并让其显示? (2)我如何一次访问一篇相关文章?例如,如果id1对id2和id3都有评论,我怎样才能显示id2或id3?
答案 0 :(得分:0)
感谢您的所有建议。根据您的意见,我解决了以下问题:
在views.py中,我写道:
myvariable = Article.objects.all()
然后将其传递给上下文字典,以便我可以使用网页呈现变量。
在模板上,我写道:
{% if item.comments_on.all.count == 1 %}
{% for key in item.commented_on_by.all %}
<strong>This study criticized:</strong> <a href="#">{{ key }}</a>
{% endfor %}
{% endif%}
{% if item.comments_on.all.count > 1 %}
<strong>This study criticized:</strong>
<ul>
{% for key in item.comments_on.all %}
<li><a href="#">{{ key }}</a></li>
{% endfor %}
</ul>
{% endif%}