html模板中的django外键表字段
Posted
技术标签:
【中文标题】html模板中的django外键表字段【英文标题】:django foreign key table fields in html template 【发布时间】:2019-07-31 14:34:54 【问题描述】:我有两个表(文章,评论)使用外键一对多相关。我本来想在 html 模板列表和表中的一些字段中写一篇文章,但我创建的不起作用,这里的代码:
models.py
class article(models.Model):
name = models.CharField(max_length=100, blank=True, null=True)
last_name = models.CharField(max_length=254)
age = models.CharField(max_length=254)
def __unicode__(self):
return str(self.id)
class comment(models.Model):
field_1 = models.CharField(max_length=100, blank=True, null=True)
field_2 = models.CharField(max_length=254)
field_3 = models.CharField(max_length=254)
field_fk= models.ForeignKey('article', blank=True, null=True)
def __unicode__(self):
return str(self.id)
views.py
def index(request):
apps = article.objects.all()
comments = comment.objects.all()
return render(request, 'index.html', 'apps':apps,'comments':comments)
html模板:
% for b in apps %
<p> b.field_1 </p>
<p> b.field_2 </p>
<p> b.field_3 </p>
% for c in b.field_fk.comments %
<p> c.name , c.last_name, c.age</p>
% endfor %
% endfor %
在我的模板示例中,不要显示 name
、 last_name
和 age
是空的段落
【问题讨论】:
为什么在field_fk
之后加了comments
?
@Daniel Roseman 告诉我你的建议
【参考方案1】:
您无法仅使用 .comments
访问 cmets。使用模型名称集。在您的情况下,它将是comments_set
。您的 for 循环将如下所示:
% for c in b.field_fk.comment_set.all %
<p> c.name , c.last_name, c.age</p>
% endfor %
另外,您没有循环正确的模型。 apps
设置为文章,但在您的模板中,您使用的是评论字段(field_1、field_2...)。第一部分应该是:
% for article in apps %
<p> article.name</p>
<p> article.last_name</p>
<p> article.age</p>
...
由于文章是主循环,因此您不要使用外键。循环应该直接使用comment_set:
% for comment in b.comment_set.all %
<p> comment.field_1 , comment.field_2 , comment.field_3</p>
% endfor %
【讨论】:
你使用的是哪个 Django 版本? django 1.11 版 有一个错字。我写了comments_set
而不是comment_set
。它现在应该可以工作了。
不,我以前看到过,不要再工作了,我不知道哪里错了:(
您在上下文中传递了 'apps': apps
。应用程序是文章。文章没有 field_1 或 field_2。您应该使用姓名、姓氏和年龄。以上是关于html模板中的django外键表字段的主要内容,如果未能解决你的问题,请参考以下文章