В Django как я могу перечислить набор запросов в одном представлении / шаблоне, сгенерированном другим представлением?

Я разрабатываю систему отслеживания, которая имеет 2 основных набора данных Orders и Shipments. Сосредоточив внимание на Orders, я хочу разрешить пользователям вводить любую комбинацию полевых данных, а затем отображать результирующий список с помощью разбивки на страницы. Для достижения этой цели у меня есть 2 вида / шаблона. Один из них, search_orders, отображает форму, которая, по сути, представляет собой список большинства полей набора данных. Другой, list_orders, отображает список выбранных заказов. Все это прекрасно работает, если я просто отображаю list_orders из search_orders без разбивки на страницы, но для того, чтобы получить разбивку на страницы, мне (полагаю, что мне) нужно search_orders перенаправить на list_orders и, таким образом до сих пор мне это не удавалось.

Просмотр поисковых запросов:

Просмотр списка заказов:

@login_required
def list_orders(request, action):
    #orders = Order.objects.all()
    if action == 'today':
        today = timezone.now().date()
        orders = Order.objects.filter(booked=today)
    elif action == 'open':
        orders = Order.objects.all().exclude(closed=True).order_by('-booked')

    paginator = Paginator(orders,16)
    page_number = request.GET.get('page',1)
    orders = paginator.page(page_number)
    return render(request,'tracker/list_orders.html',{'orders':orders,'action':action})

urls.py

app_name = 'tracker'

urlpatterns = [
    path("about/", views.about, name="about"),
    path("mainmenu/", views.mainmenu, name="mainmenu"),
    path("search_orders/", views.search_orders, name="search_orders"),
    path("list_orders/<str:action>/", views.list_orders, name="list_orders"),
...

Как я могу передать отфильтрованный набор запросов в list_orders для постраничного отображения или, в качестве альтернативы, передать выбранные поля запроса в list_orders таким образом, чтобы list_orders мог выполнять фильтрацию?

(Для краткости я опустил соответствующие шаблоны, но при желании могу их добавить.)

Ответ, который меня устраивает, заключается в преобразовании результирующего QueryDict, сгенерированного search_orders, сначала путем преобразования в двоичный файл с помощью pickle, а затем преобразования результирующего двоичного файла в base64 а затем перенаправить на list_orders с выводом pickled/base64 в виде одного строкового параметра.

На принимающей стороне, в list_orders, первое, что нужно сделать, это отменить процесс обработки/base64, чтобы преобразовать параметр обратно в QueryDict, а затем обработать его - но эта обработка выполняется в list_orders, а не в search_orders.

Таким образом, по сути, страница/представление поиска используется только для получения входных данных фильтрации, а страница/представление списка выполняет фактическую обработку.

Вернуться на верх