Sha*_*dul 2 python django postgresql
我正在尝试制作一份党派账簿。哪些详细信息将按日期搜索结果显示。我有一个列名称平衡,它将按日期搜索显示累积数据。我想查看表中的cumbalance列取决于余额列。
--------------------------------------
amount payment balance CumBalance
--------------------------------------
10 5 5 5
20 5 15 20
10 15 -5 15
Run Code Online (Sandbox Code Playgroud)
我的看法:
--------------------------------------
amount payment balance CumBalance
--------------------------------------
10 5 5 5
20 5 15 20
10 15 -5 15
Run Code Online (Sandbox Code Playgroud)
我也尝试过.aggregate(Sum('balance'))
我的模型:
def partyDetails(request,pk):
form = DateRangeForm()
if request.method == 'POST':
form = DateRangeForm(request.POST or None)
if form.is_valid():
cumulative_balance = PurchasePayment.objects.all()
.filter(vendor=pk,date__range=
(form.cleaned_data['start_date'],
form.cleaned_data['end_date']))
.annotate(cumbalance =Sum('balance'))
else:
return redirect('party_ledger')
return render(request, 'purchase/party_details.html',
{'dateform':form,
'cumbal':cumulative_balance,'name':pk})
Run Code Online (Sandbox Code Playgroud)
从django-2.0开始,您可以使用Window表达式 [Django-doc]:
from django.db.models import F, Sum, Window
cumulative_balance = PurchasePayment.objects.filter(
vendor=pk,
date__range=(form.cleaned_data['start_date'], form.cleaned_data['end_date'])
).order_by('pk').annotate(
cumbalance=Window(Sum('balance'), order_by=F('id').asc())
)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |