[英]Python and django: how to set a filter value with a form
我創建了以下 model 讓我有可能獲得所有每日收入:
class Ricavi(models.Model):
quantita=models.DecimalField()
data_contabile=models.DateField()
之后,我創建了一個views.py,它使我可以在年度和月度視圖中收集我的數據,如下所示:
ricavi = dict()
total_ricavi=dict()
for year, month, totale in(Ricavi.objects.values_list( 'data_contabile__year', 'data_contabile__month').
annotate(totale=ExpressionWrapper(Sum(F('quantita') * F('ricavo')*(1+F('iva'))),
output_field=FloatField())).values_list('data_contabile__year', 'data_contabile__month', 'totale')).filter(data_contabile__year=2019):
if id not in ricavi.keys() :
ricavi[id]=list(defaults)
index=month-1
ricavi[id][index]=totale
total_ricavi={'Ricavi Lordi': [sum(t) for t in zip(*ricavi.values())],}
現在我已經修復了data_contabile__year
等於 2019 廣告示例。 但我希望有可能選擇年份(使用選擇表格的廣告示例)。 我怎么能得到這個結果?
這是一個簡單的例子:
表格.py:
from django.forms import IntegerField
class RicaviForm(Form):
Year = IntegerField(label='Year')
視圖.py:
def ricavi_view(request):
if request.method == 'POST':
form = RicaviForm(request.POST)
if form.is_valid():
# Do somthing with form['Year'].value()
return redirect('stack:ricavi_view')
else:
errors = form.errors
form = RicaviForm()
context = {'form': form, 'ERROR': errors}
return render(request, "stack/ricavi.html", context)
else:
form = RicaviForm()
context = {'form': form}
return render(request, "stack/ricavi.html", context)
ricavi.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="{% url 'stack:ricavi_view' %}" method="POST">
{% csrf_token %}
{{ form }}
<button class="btn btn-primary" name="submit" onclick="submit()">submit</button>
</form>
{{ERROR}}
</body>
</html>
網址.py:
from django.urls import path
from . import views
app_name = 'stack'
urlpatterns = [
path('ricavi', views.ricavi_view, name='ricavi_view'),
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.