如何从数据库访问上一行

时间:2013-02-15 11:32:19

标签: django

views.py

            AppTruepower = form.cleaned_data['truepower_reading']
            AppApparent = form.cleaned_data['apparentpower_reading']
            AppVoltage = form.cleaned_data['voltage_reading']
            AppDate = form.cleaned_data['Date']
            AppTime = form.cleaned_data['Time']
            prevdate=KEBReading.objects.latest("id")
            print prevdate.truepower_reading
            print id
            KEBReading.objects.filter(id=id).update(truepower_reading=AppTruepower,apparentpower_reading=AppApparent,
                                                        voltage_reading=AppVoltage,datetime_reading=datetime.combine(AppDate,AppTime))


            a=KEBReading.objects.filter(id=id).values("truepower_reading")
            print a
            b=KEBReading.objects.filter(id=id).values("apparentpower_reading")
            print b
            print prevdate.truepower_reading

在django表单中编辑行时。我需要访问上一行来进行一些计算。总结建议我怎么能得到前一行。如果我使用model.s.object.latest()我得到最后一行输入,但在我的情况下,我需要得到前一行,即当前行的前一行即将编辑。

1 个答案:

答案 0 :(得分:0)

我取决于你对行的顺序。如果您希望前一行id,则可以

curr_row = KEBReading.objects.filter(id=current_id)
#decrement id until you find valid record, as previous id might have deleted.
prev_row = KEBReading.objects.filter(id=current_id-1) 

如果您想要其他领域的订单,那么

rows = KEBReading.objects.order_by('-some_field_to_order') # use - for reverse ordering
current_row = rows[0]
prev_row = rows[1]  
#verify for index errors though.
相关问题