0

template.html

{% extends "base.html" %}

<body>
{% block content %}

<form action="." method="post">
{% csrf_token %}


<table align="center" style="margin-left:60px";>

        <p>{{KEBReading_form.as_table}}</p>
<tr><td colspan="2" align="right"><input name="KEBsubmit" type="submit" value="Submit Reading" id="_KEBsubmit1"/> </td></tr>
    <tr><td colspan="2" >{{KEBMessage}} </td></tr>
</table>
</form>


<table border="1">
<p> KEB Reading as on Month jan and year 2012</p>
<tr>
<th>Date </th>
<th>Time</th>
<th>True Power Reading</th>
<th>Apparent Power Reading</th>
<th>True Power consumed</th>
<th>Voltage Reading</th>
<th>Power Factor</th>
 </tr>



{% for item in q2 %}
 <tr>
 <td>{{item.date}}</td>
 <td>{{item.time}}</td>
 <td>{{item.truepower_reading}}</td>
 <td>{{item.apparentpower_reading}}</td>
  <td>{{item.truepower_consumed}}</td>
  <td>{{item.voltage_reading}}</td>
    <td> {{item.powerfactor}}</td>
 </tr>
 {% endfor %}

 </table>

{%エンドブロックコンテンツ%}

views.py

 def KEBReading1(request):
#form2 = KEBReading.objects.all()
if request.method == "POST":


    form = KEBReading_form(request.POST)
    if form.is_valid():
        prevdate=KEBReading.objects.latest("date")
       # Model.objects.latest('field')
        print prevdate.date
        print prevdate.time
        # q1 = KEBReading.objects.get(datetime.date.today()-datetime.timedelta(0))

        kr_truepower_reading = form.cleaned_data["truepower_reading"]
        kr_apparentpower_reading = form.cleaned_data["apparentpower_reading"]
        truepower_consumed1=kr_truepower_reading-prevdate.truepower_reading
        powerfactor1=((kr_truepower_reading-prevdate.truepower_reading)/(kr_apparentpower_reading-prevdate.apparentpower_reading))
        #instance=truepower_consumed,powerfactor
  ## replace form.save() with following lines



        form1=form.save(commit=False)
        #form1.calculate(truepower_consumed1,powerfactor1)
        form1.truepower_consumed=truepower_consumed1
        form1.powerfactor=powerfactor1
        print form1.powerfactor
        form1.save()



        q2=KEBReading.objects.latest("date")

        context={'KEBReading_form':form,'q2':q2}
        return render_to_response('keb.html',context,context_instance=RequestContext(request))

else:
    form = KEBReading_form()

return render_to_response('keb.html',{'KEBReading_form':form},context_instance=RequestContext(request))

テンプレートのビューから計算したすべての読み取り値をテーブルに表示したい。forループを使用して反復しているときにモデルオブジェクトを反復できません。

4

3 に答える 3

0

q2変数は単なるオブジェクトであり、セットではありません。

次の行は単一のオブジェクトを返します-

KEBReading.objects.latest("date")

しかし、テンプレートは、反復できるセットを期待しています-

{% for item in q2 %}
 <tr>
 <td>{{item.date}}</td>
 <td>{{item.time}}</td>
 <td>{{item.truepower_reading}}</td>
 <td>{{item.apparentpower_reading}}</td>
  <td>{{item.truepower_consumed}}</td>
  <td>{{item.voltage_reading}}</td>
    <td> {{item.powerfactor}}</td>
 </tr>
 {% endfor %}

関数のドキュメントを確認してくださいlatest()

于 2013-01-22T07:42:21.857 に答える
0

latest()オブジェクトのセットではなく、テーブル内の最新のオブジェクトを返します。その代わりに、KEBReading.objects.all().order_by('date')

于 2013-01-22T07:48:21.827 に答える
0

いくつかの問題:

  1. まず、Aidanが正しく指摘KEBReading.objects.latest("date")したように、これはコレクションや反復可能ではなく、オブジェクトを返します。

  2. 次に、ビューで計算しているフィールドを割り当てていません。truepower_consumed1=kr_truepower_reading-prevdate.truepower_reading取得したオブジェクト(your q2)には割り当てられません。これが意図的なものかどうかはわかりません。ただし、テーブルの別のレコードではなく、フォームのインスタンスをテンプレートに戻したいと思われます。質問を更新する必要があります。

これらの問題をすぐに修正するには:

 <tr>
 <td>{{q2.date}}</td>
 <td>{{q2.time}}</td>
 <td>{{q2.truepower_reading}}</td>
 <td>{{q2.apparentpower_reading}}</td>
 <td>{{q2.truepower_consumed}}</td>
 <td>{{q2.voltage_reading}}</td>
 <td> {{q2.powerfactor}}</td>
 </tr>
于 2013-01-22T07:48:50.097 に答える