我想要列出与故事相关联的文章列表,以便在故事专用的行上呈现故事。目前该模板仅返回来自上一个故事的文章在三个不同的行上。编写和理解的代码是:将query_set的列表呈现为html模板上的行
许多文章可以属于一个故事。 /models.py
class Story(models.Model):
title = models.CharField(max_length=200, default= "")
description = models.TextField()
publication_date = models.DateTimeField()
class Article(models.Model):
feed = models.ForeignKey(Feed)
title = models.CharField(max_length=200)
url = models.URLField()
publication_date = models.DateTimeField()
story = models.ManyToManyField(Story, default=None, blank=True)
使用查询,得到所有story_ids的列表。如果story_id_lst中的条目等于文章中的story_id,则将该故事附加到行列表中。
/views.py
def articles_list(request):
articles = Article.objects.all()
story_id_lst = articles.values_list('story').distinct()
for entry in story_id_lst:
rows = articles.filter(story=entry)
运行在shell代码返回三个列表,一个空的,一个与匹配的故事1和一个与匹配的所有文章,故事2.我认为这个问题的所有文章在下面的代码中。
/views.py
return render(request, 'news/articles_list.html', {'rows': rows})
/articles_list.html
<div class="container" style="background-color: #DCDCDC; border-radius: 25px;">
<div class="row">
{% for row in rows %}
<div class="col-md-12">
{% for entry in row %}
<div class="container-fuild">
<div class="col-md-4" >
<h2>{{entry.title}}</h2>
<div>
<p><a href="{{entry.url}}" target="_blank" class="btn btn-primary">View Details</a></p>
</div>
</div>
</div>
{% endfor %}
</div>
{% endfor %}
</div>
</div>
您的看法是这样FUBAR我甚至不知道从哪里开始(除了前行似乎是错误的如果你想实现“许多文章可以属于一个故事”(你已经实现了“一篇文章可以属于这个文章到0或更多的故事“。 – thebjorn
我不应该在我的视图中使用查询,或者不将查询放置在列表中?你能指出我如何清理/修复它吗? – CornCob