你如何从递归的多对多关系中检索Django对象?

时间:2017-07-20 01:21:30

标签: python django recursion many-to-many

我有一个表示文章的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?

1 个答案:

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