所以我刚刚接触到Django,
我想要一些比较苛刻的东西.我有一个模型:
class Article(models.Model):
id = models.IntegerField(primary_key=True)
volnumber = models.IntegerField(db_column='volNumber')
title = models.TextField()
keywords = models.TextField(blank=True)
start_page = models.IntegerField(null=True, blank=True)
end_page = models.IntegerField(null=True, blank=True)
author_1 = models.TextField(blank=True)
author_2 = models.TextField(blank=True)
author_3 = models.TextField(blank=True)
author_4 = models.TextField(blank=True)
author_5 = models.TextField(blank=True)
author_6 = models.TextField(blank=True)
author_7 = models.TextField(blank=True)
author_8 = models.TextField(blank=True)
author_9 = models.TextField(blank=True)
author_10 = models.TextField(blank=True)
Run Code Online (Sandbox Code Playgroud)
在我看来:
def index(request):
article_list = Article.objects.all()
volume_list = Volume.objects.all()
auth_list = ['author_1', 'author_2', 'author_3', 'author_4', 'author_5', 'author_6', 'author_7', 'author_8', 'author_9', 'author_10', ]
return render_to_response('index.html', {
'article_list': article_list,
'volume_list': volume_list,
'auth_list' : auth_list,
})
Run Code Online (Sandbox Code Playgroud)
我想迭代第一篇文章的作者,以及消除模板中列表的空条目:
<ul class="articleList">
{% for article in article_list %}
<li>
{% for author in auth_list %}
<i>{{ article."author" }}</i>
{% endfor %}
{{ article.title }}{{ article }}
</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,我不确定模板是否适合这种逻辑,但我希望从中可以清楚地知道我想要实现的目标.
任何协助非常感谢.
我不确定你是否想要设计一份作者列表.如果您需要多个作者,请考虑为Author使用新模型,然后在Article类中使用ManyToManyField将文章链接到作者.然后,您可以在模板中循环访问作者,如下所示:
{% for author in article.authors.all %}
<!-- blah blah -->
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这是作者模型:
class Author(models.Model):
first_name = models.TextField(...) # don't copy to ..., put whatever params you need
last_name = models.TextField(...)
Run Code Online (Sandbox Code Playgroud)
和调整后的条款模型:
class Article(models.Model):
# add this line
authors = models.ManyToManyField(Author)
Run Code Online (Sandbox Code Playgroud)
现在您不需要auth_list
在视图代码中返回一个.