【问题标题】:python django_tables2 filtering and pagination issuepython django_tables2 过滤和分页问题
【发布时间】:2015-12-03 18:19:02
【问题描述】:

我正在尝试使用过滤数据表呈现网页。过滤应该基于用户提交的日期。对于初始 GET 请求,我尝试将 initial_date 设置为 '01 01 2015',当提交 POST 请求时,会从 POST 查询集中提取日期。

我遇到的问题似乎与 django_tables2 分页有关。 用户在 POST 请求中提交日期表单后,初始表数据已成功呈现,但是当我单击表底部的“下一步”按钮时,我收到“异常值:该页面不包含结果”。

单击下一步按钮似乎将 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})

【问题讨论】:

    标签: python pagination filtering django-tables2


    【解决方案1】:

    可能不是最干净的方法,但我设法通过引用和更新 GetCustomData() 函数之外的列表来使其工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-15
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 2020-12-10
      相关资源
      最近更新 更多