【发布时间】:2010-12-01 18:57:50
【问题描述】:
这是我与 Django 新生活的第二天,请原谅我的问题过于简单。
我有一个现有的数据库表(只读访问),我已经使用 url、视图、模型和所有好东西成功地在网页上显示了它的内容。
我面临的挑战是表格不包含我需要显示的所有信息。该表包含测试结果,其中包含 sampletime、samplevalue、sampleresult 列。我需要根据我从这些列中计算出的数据来显示不同的数据。
我的最终目标是使用flotr 将此信息显示为时间序列图。现在我很乐意将我需要的数据转储到网页上的表格中。(这样我就可以可视化结果数据)
我想传递给模板的是,
- jssampletime(采样时间日期时间 对象转换为 javascript 纪元 毫秒)
- resultvalue(基于sampleresult好坏的samplevalue的滚动总和+-)
我可以使用 def 函数创建 jssampletime 和 resultvalue。我想我会将这些函数添加到views.py
我猜我需要对views.py 中的查询集进行迭代,并将结果存储在我传递给模板的字典列表中。像这样的东西(代码未测试)。
views.py
# views.py
# Sudo code to assit in asking the question
from django.shortcuts import render_to_response
from thing.reporter.models import Samples
def _datetime_to_js(sampletime):
#.. date conversion epoch magic
return jsd_result
def _rolling_sum(samplevalue,sampleresult):
#.. summing magic
return sum_result
def dumptable(request): # The def that is called by urls.py
object_list = Samples.objects.all()
list_for_template = []
for row in object_list:
jssampletime = _datetime_to_js(row.sampletime)
resultvalue = _rolling_sum(row.samplevalue,row.sampleresult)
list_for_template.append({'jssampletime':jssampletime,'resultvalue':resultvalue})
return render_to_response('tabledump.html', {'result_list': list_for_template})
tabledump.html
# tabledump.html template
{% block content %}
<h2>Results dumped to page for testing</h2>
<ul>
<table>
{% for result in result_list %}
<tr>
<td>{{ result.jssampletime }}</td>
<td>{{ result.resultvalue }}</td>
</tr>
{% endfor %}
</table>
</ul>
{% endblock %}
我认为这可行,但我不确定它是否是 Django MVC 方式。
我是不是,
- 通过对查询集结果进行交互来计算我在views.py 中需要的结果?
- 将我的结果作为模板传递给 字典列表(是一个查询集超过 那个)?
我想我正在寻找一些方向和代码提示。 我在正确的道路上吗?有没有更好的办法?
【问题讨论】: