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

2024-04-20 13:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

请给我任何提示,谢谢

型号:

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

Tags: self视图truedatetitlemodelscontextlength
1条回答
网友
1楼 · 发布于 2024-04-20 13:23:33

您应该使用self.object变量,该变量由DetailView提供:

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

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

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

[1]self.object由调用get_context_data()的时间定义

相关问题 更多 >