根据输入的日期过滤计算收入和费用
Calculating income and expense by filtering according to the entered date
我有一个日期选择器,我会根据这个日期计算收入和支出。我想在 view.py 中的函数中添加一个名为 random_date 的参数。我希望用户设置结束日期。开始时间将是今天的日期。例如,如果用户选择了 6 月 1 日作为日期,我想将今天到 6 月 1 日的收入和支出相加。我该怎么做?
这是我的 views.py 文件:
import datetime
from django.shortcuts import render
from incomes.models import Income, Source
from expenses.models import Expense, Category
from .models import SummaryModel
# Create your views here.
def Summary(request):
todays_date = datetime.date.today()
six_months_later = todays_date + datetime.timedelta(days=180)
all_expenses = Expense.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
all_incomes = Income.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
def get_amount(EorI):
amount = 0
for item in EorI:
amount += item.amount
return amount
final_rep = {'Net_Income' : get_amount(all_incomes) - get_amount(all_expenses)}
return render(request, 'summary.html', final_rep)
这是我的 summary.html 文件:
<div class="card">
<div class="card-body">
</select>
<div class="form-group">
<label for="">Choose a date</label>
<input type="date" value="{{values.date | date:'Y-d-m'}}" class="form-control form-control-sm" name="random_date" />
</div>
<input type="submit" value="Submit" class="btn btn-primary btn-primary-sm" />
<div class="container">
<div class="col s12 m12 l4">
<div class="card-panel">
<h8 class="bold">Net Budget</h8>
<h1 class="bold">${{ Net_Income }}</h1>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
您可以像这样从您的请求中访问 POST 或 GET 参数:
request.GET.get('my_var')
request.POST.get('my_var')
您的 summary.html 示例省略了您的表单开始标记,因此这里是您可以使用的视图,假设您正在 POST 向您的视图发送信息:
def Summary(request):
todays_date = datetime.date.today()
six_months_later = todays_date + datetime.timedelta(days=180)
random_date = request.POST.get('random_date')
all_expenses = Expense.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
all_incomes = Income.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
context = {'Net_Income' : get_amount(all_incomes) - get_amount(all_expenses)}
if random_date:
filtered_expenses = Expense.objects.filter(owner=request.user, date__gte=todays_date, date__lte=random_date)
filtered_incomes = Income.objects.filter(owner=request.user, date__gte=todays_date, date__lte=random_date)
context['Filtered_Income'] = get_amount(filtered_incomes) - get_amount(filtered_expenses)
def get_amount(EorI):
amount = 0
for item in EorI:
amount += item.amount
return amount
return render(request, 'summary.html', context)
新值将在您的模板中作为 Filtered_Income
提供,但前提是用户 POST 编辑了日期,因此您需要使用类似 {% if Filtered_Income %}
[=15 的内容=]
我有一个日期选择器,我会根据这个日期计算收入和支出。我想在 view.py 中的函数中添加一个名为 random_date 的参数。我希望用户设置结束日期。开始时间将是今天的日期。例如,如果用户选择了 6 月 1 日作为日期,我想将今天到 6 月 1 日的收入和支出相加。我该怎么做?
这是我的 views.py 文件:
import datetime
from django.shortcuts import render
from incomes.models import Income, Source
from expenses.models import Expense, Category
from .models import SummaryModel
# Create your views here.
def Summary(request):
todays_date = datetime.date.today()
six_months_later = todays_date + datetime.timedelta(days=180)
all_expenses = Expense.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
all_incomes = Income.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
def get_amount(EorI):
amount = 0
for item in EorI:
amount += item.amount
return amount
final_rep = {'Net_Income' : get_amount(all_incomes) - get_amount(all_expenses)}
return render(request, 'summary.html', final_rep)
这是我的 summary.html 文件:
<div class="card">
<div class="card-body">
</select>
<div class="form-group">
<label for="">Choose a date</label>
<input type="date" value="{{values.date | date:'Y-d-m'}}" class="form-control form-control-sm" name="random_date" />
</div>
<input type="submit" value="Submit" class="btn btn-primary btn-primary-sm" />
<div class="container">
<div class="col s12 m12 l4">
<div class="card-panel">
<h8 class="bold">Net Budget</h8>
<h1 class="bold">${{ Net_Income }}</h1>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
您可以像这样从您的请求中访问 POST 或 GET 参数:
request.GET.get('my_var')
request.POST.get('my_var')
您的 summary.html 示例省略了您的表单开始标记,因此这里是您可以使用的视图,假设您正在 POST 向您的视图发送信息:
def Summary(request):
todays_date = datetime.date.today()
six_months_later = todays_date + datetime.timedelta(days=180)
random_date = request.POST.get('random_date')
all_expenses = Expense.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
all_incomes = Income.objects.filter(owner=request.user, date__gte=todays_date, date__lte=six_months_later)
context = {'Net_Income' : get_amount(all_incomes) - get_amount(all_expenses)}
if random_date:
filtered_expenses = Expense.objects.filter(owner=request.user, date__gte=todays_date, date__lte=random_date)
filtered_incomes = Income.objects.filter(owner=request.user, date__gte=todays_date, date__lte=random_date)
context['Filtered_Income'] = get_amount(filtered_incomes) - get_amount(filtered_expenses)
def get_amount(EorI):
amount = 0
for item in EorI:
amount += item.amount
return amount
return render(request, 'summary.html', context)
新值将在您的模板中作为 Filtered_Income
提供,但前提是用户 POST 编辑了日期,因此您需要使用类似 {% if Filtered_Income %}
[=15 的内容=]