如何获得同一模型的多对多关系列表

时间:2018-01-24 14:21:21

标签: python django model many-to-many relationship

我想将具有给定模型的相关消息列表移动到视图中的变量 - 这是“相关”字段。 目前,我正在获取网站上显示的所有对象。

请提示,非常感谢。

型号:

class News(models.Model):
    title = models.CharField(max_length=500)
    subtitle = models.CharField(max_length=1000, blank=True)
    text = models.TextField()
    link_title = models.CharField(max_length=500)
    date = models.DateField(null=True)
    related = models.ManyToManyField('self', symmetrical=False, blank=True)

    class Meta:
        verbose_name_plural = 'news'
        ordering = ['-date']

查看:

class NewsDetailView(DetailView):
    model = models.News
    context_object_name = 'news_item'

    def get_context_data(self, **kwargs):
        context = super(NewsDetailView, self).get_context_data(**kwargs)
        context['related_news'] = models.News.objects.values_list('related', flat=True)
        return context

1 个答案:

答案 0 :(得分:0)

您应该使用self.object为您提供的DetailView变量:

context['related_news'] = self.object.related.all()  # [1]

这样您就可以在模板中迭代元素:

{% for related_item in related_news %}
    {{ related_item.title }}
{% endfor %}

[1] self.objectget_context_data()被称为

的时间定义