如何在 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 对象的数组?

如何在模板中迭代 python-django 循环 N 次?

Django - 如何将查询合并为一个并将其显示在模板中?

在JSP中如何让页面一行显示20字

如何在html的输入字段中显示当前日期? [复制]

lintcode-medium-Nuts & Bolts Problem