簡體   English   中英

Python 和 django:如何使用表單設置過濾器值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM