我对 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 %}
问候 乔治
您不需要单独获取所有值,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”更改为模型的实际名称