我正在尝试使用过滤数据表格呈现网页。过滤应基于用户提交的日期。对于初始GET请求,我尝试设置initial_date为'01 01 2015',当提交POST请求时,日期从POST查询集中提取。
我遇到的问题似乎与django_tables2分页有关。 用户在POST请求中提交日期表单后成功呈现初始表数据,但是当我单击表底部的“下一步”按钮时,我收到“异常值:该页面不包含任何结果”。
单击Next按钮似乎将GetCustomData()函数作为GET请求调用,然后使用“initial_time”而不是过滤后的数据。
如何格式化我的函数,以便后续的GET请求从初始POST请求返回过滤后的数据?
views.py
from django.shortcuts import render
from .models import TestResult
import datetime
import django_tables2 as tables
from .forms import DateForm
class SimpleTable(tables.Table):
class Meta:
model = TestResult
attrs = {"class": "paleblue"}
def GetCustomData(request):
form = DateForm()
if request.method == 'POST':
request_time = datetime.datetime.strptime((request.POST['custom_date_day']+' '+request.POST['custom_date_month']+' '+request.POST['custom_date_year']), '%d %m %Y')
time_min = datetime.datetime.combine(request_time, datetime.time.min)
time_max = datetime.datetime.combine(request_time, datetime.time.max)
custom_query = TestResult.objects.filter(timestamp__range=(time_min, time_max))
table = SimpleTable(custom_query)
table.paginate(page=request.GET.get('page', 1), per_page=30)
return render(request, 'custom_results.html', {'table_results': table,
'form': form})
elif request.method == 'GET':
initial_time = datetime.datetime.strptime('01 01 2015', '%d %m %Y')
time_min = datetime.datetime.combine(initial_time, datetime.time.min)
time_max = datetime.datetime.combine(initial_time, datetime.time.max)
custom_query = TestResult.objects.filter(timestamp__range=(time_min, time_max))
table = SimpleTable(custom_query)
table.paginate(page=request.GET.get('page', 1), per_page=30)
return render(request, 'custom_results.html', {'table_results': table,
'form': form})
答案 0 :(得分:0)
可能不是最干净的方法,但我设法通过引用和更新GetCustomData()函数之外的列表来实现它。