将 Django 模型引入 HTML 表

问题描述 投票:0回答:1

我对 Django 非常陌生,我正在开展我的第一个培训项目。

我想每个月记录一组仪表(水、电等),并且我想在 html 表格中查看这些仪表,例如:

2023 年 11 月 2023 年 12 月 2024 年 1 月
1米 500 510
2米 1000 1300
3米 100 110 120

我在 models.py 中使用了 4 个模型:
model Metertype -> 电表、水表、及其他类型表
仪表型号->仪表名称/描述
模型阅读日期 -> 阅读日期,通常是每月的最后一天
模型读数值 -> 我从仪表读取的值

from django.db import models


class meterType(models.Model):
    meterType = models.CharField(max_length=100)
   

class meter(models.Model):
    meterName = models.CharField(max_length=100)
    meterType = models.ForeignKey(
        meterType, on_delete=models.CASCADE)
        

class readingDate(models.Model):
    date = models.DateField()
    

class readingsValue(models.Model):
    readingsValue = models.DecimalField(max_digits=10, decimal_places=2)
    meter = models.ForeignKey(Zaehler, on_delete=models.CASCADE)
    readingDate = models.ForeignKey(Ablesedatum, on_delete=models.CASCADE)

完成此操作后(它似乎可以在管理区域中工作)。我提出了一个非常基本的 view.py :

from django.shortcuts import render
from .models import readingsValue, meter, meterType, readingDate


def index(request):
    readingsValue = readingsValue.objects.all()
    meter = meter.objects.all()
    meterType = meterType.objects.all()
    readingDate = readingDate.objects.all()

    return render(request, "meters/index.html",
                  {"meter": meter,
                   "readingsValue": readingsValue,
                   "meterType": meterType,
                   "readingDate": readingDate,
                   })

现在我真的不知道如何将数据获取到表中。我正在尝试使用 for 循环和 if 语句,但数据总是会变得混乱。我认为这是一个标准问题,但到目前为止我还没有找到任何解决方案。 Django 在这里是如何思考的以及正式的方法是怎样的?

这是到目前为止的 html 文件:

{% extends 'meters/base.html' %}  

{% block title %}   
  All Data
{% endblock %}  

{% block content %}   
  <table>     
    <tr>       
      <th></th>       
      {% for readingDate in readingDate %}         
        <th scope="col">{{ readingDate.readingDate|date:'M Y' }}</th>       
      {% endfor %}     
    </tr>     
    {% for meter in meter %}       
      <tr>         
        <th scope="row">{{ meater.meaterName }}</th>       
      </tr>     
    {% endfor %}   
  </table> 
{% endblock %}

问候 乔治

django django-views
1个回答
0
投票

您不需要单独获取所有值,readingsValue 已经连接到其他对象。

def index(request):
    readingsValue = readingsValue.objects.all()

    return render(request, "meters/index.html",
                  {
                   "readingsValue": readingsValue,})

对于模板来说,一个简单的 for 循环就足够了

<table>     
    ...
      {% for readingsValue in readingsValues %}         
        {{ readingsValue.readingsValue }}
        {{ readingsValue.meter.meterName }}
        {{ readingsValue.meter.meterType.meterType }}
        {{ readingsValue.readingDate.date }}
      {% endfor %}     
    ...
  </table> 

请在 models.py 中将“Zaehler”和“Ablesedatum”更改为模型的实际名称

© www.soinside.com 2019 - 2024. All rights reserved.