【发布时间】:2016-11-20 05:43:57
【问题描述】:
这里是 Django 新手。我正在尝试创建一个简单的应用程序来讨论股票,用户可以在其中创建主题并与特定股票建立多对多关系。在主题详细信息页面中,我想显示与该主题相关的所有股票。我遇到了障碍:AttributeError 'QuerySet' 对象没有属性 'related_stocks'。尽管经历了其他人提出的类似问题,但我似乎仍然无法弄清楚。任何帮助将不胜感激。请参阅下面的代码:
models.py
class Topic(models.Model):
title = models.CharField(max_length=50)
related_stocks = models.ManyToManyField(Stock)
slug = models.SlugField(max_length=200, blank=True)
created = models.DateField(auto_now_add=True,
db_index=True)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
super(Topic, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('comments:topic_detail', args=[self.id, self.slug])
views.py
def topic_detail(request, id, slug):
topic = Topic.objects.all().filter(id=id, slug=slug)
related_stocks = topic.related_stocks
return render(request,
'comments/comment/topic-detail.html',
{'section': 'topics',
'topic': topic,
'related_stocks': related_stocks})
topic-detail.html
{% extends "base.html" %}
{% block title %}{{ topic.title }}{% endblock %}
{% block content %}
<h1>Stocks associated with {{ topic.title }}.</h1>
{% for related_stock in related_stocks %}
<ul>
<a href="{{ related_stock.get_absolute_url }}">
{{ related_stock.ticker }}
</a>
</ul>
{% endfor %}
{% endblock %}
【问题讨论】: