如何在 html 模板中显示 nut、date 字段?如何访问 html 模板中的外键字段?
Posted
技术标签:
【中文标题】如何在 html 模板中显示 nut、date 字段?如何访问 html 模板中的外键字段?【英文标题】:how to display the nut,date fields in html template ? how to access foreign key fields in html tamplate? 【发布时间】:2021-02-23 14:21:07 【问题描述】:我在models.py中有三个模型,分别是Topic、Webpage和AccessRecord。类 AccessRecord 与类网页有外键关系 我想在用于显示类网页内容的 html 模板中使用 AccessRecord 字段 nut,date 我们如何访问与类网页有外关系的 AccessRecord 字段?
这是我的模特:
class Topic(models.Model):
top_name = models.CharField(max_length=264,unique=True)
def __str__(self):
return self.top_name
class Webpage(models.Model):
topic = models.ForeignKey(Topic)
name = models.CharField(max_length=264,unique=True)
url = models.URLField(unique=True)
def __str__(self):
return self.name
class AccessRecord(models.Model):
name = models.ForeignKey(Webpage)
date = models.DateField()
nut = models.CharField(max_length=56)
def __str__(self):
return str(self.date)
这是我的看法:
def index(request):
webpage_list = Webpage.objects.all()
web_dict = "web_records":webpage_list
return render(request,'first_app/index.html',web_dict)
这是我的模板:
<body>
<h1>Hi, welcome to Django Level Two!</h1>
<h2>Here are your access records:</h2>
<div class="djangtwo">
% if web_records %
<table style="float: left">
<thead>
<th>Topic Name</th>
<th>Site name</th>
<th>Url Accessed</th>
<th>Date Accessed</th>
<th>Webpage nut</th>
</thead>
% for web in web_records %
<tr>
<td> web.topic </td>
<td> web.name </td>
<td> web.url </td>
<td> web.nut </td>
<td> web.date </td>
</tr>
% endfor %
</table>
% endif %
</div>
</body>
【问题讨论】:
为什么不移动网页模型中的螺母和日期字段,而不是为两个字段创建另一个模型?这将是有效的。 我知道,但我想知道如何访问外键字段 【参考方案1】:你也可以让views.py喜欢
#views.py
def index(request):
return render(request,'first_app/index.html')
并修改模板,如:-
<body>
<h1>Hi, welcome to Django Level Two!</h1>
<h2>Here are your access records:</h2>
<div class="djangtwo">
% if web_records %
<table style="float: left">
<thead>
<th>Topic Name</th>
<th>Site name</th>
<th>Url Accessed</th>
<th>Date Accessed</th>
<th>Webpage nut</th>
</thead>
<tr>
<td> user.web.topic </td> #HERE
<td> user.web.name </td> #HERE
<td> user.web.url </td> #HERE
<td> user.web.nut </td> #HERE
<td> user.web.date </td> #HERE
</tr>
% endfor %
</table>
% endif %
</div>
</body>
AND IF YOU WANT LOOP,SO YOU CAN EASILY USER LOOP.
【讨论】:
我想在 html 模板中填写“访问日期”和“网页螺母”列 如果可以请再次浏览我的代码并在浏览器中查看【参考方案2】:你也可以这样试试:
-
在
AccessRecord
模型中将name
字段重命名为web
。
models.py
class AccessRecord(models.Model):
web = models.ForeignKey(Webpage)
date = models.DateField()
nut = models.CharField(max_length=56)
def __str__(self):
return str(self.date)
-
获取
AccessRecord
模型而不是Webpage
模型的所有对象。
views.py
from django.http import HttpResponse
from django.template import loader
def index(request):
access_records = AccessRecord.objects.all()
context = "access_records": access_records
t = loader.get_template('first_app/index.html')
return HttpResponse( t.render( context, request ) )
-
在您的模板中循环访问记录。
index.html
<body>
<h1>Hi, welcome to Django Level Two!</h1>
<h2>Here are your access records:</h2>
<div class="djangtwo">
% if access_records %
<table style="float: left">
<thead>
<th>Topic Name</th>
<th>Site name</th>
<th>Url Accessed</th>
<th>Date Accessed</th>
<th>Webpage nut</th>
</thead>
% for access_record in access_records %
<tr>
<td> access_record.web.topic </td>
<td> access_record.web.name </td>
<td> access_record.web.url </td>
<td> access_record.nut </td>
<td> access_record.date </td>
</tr>
% endfor %
</table>
% endif %
</div>
</body>
【讨论】:
以上是关于如何在 html 模板中显示 nut、date 字段?如何访问 html 模板中的外键字段?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 C++ 模板实现 int、string、float 和 date 对象的数组?