Django: как использовать объект из предыдущей формы для фильтрации объекта? - PullRequest
0 голосов
/ 03 июня 2018
def Date_Form(request):
    if request.method == 'POST':
        form = DateForm(request.POST)

        if form.is_valid():
            date = form.cleaned_data['date']

            date1 = DateOptions.objects.get(date=date)
            flight_date = Flight.objects.filter(date_options=date1)

            form1 = KeyWordForm(request.POST)

            return render(request, 'app/index.html',{'flight_date': flight_date, 'date': date, 'form1': form1})

    else:
        form = DateForm()

    return render(request, 'app/options.html', {'form':form})


def Search_Destination(request):
    if request.method =='POST':
        form1 = KeyWordForm(request.POST)

        if form1.is_valid():
            destination = form1.cleaned_data['destination'].capitalize()

            result= Flight.objects.filter(destination__icontains=destination, date_options=????)

            return render(request, 'app/search.html', {'result':result, 'destination':destination})

    else: 
        form1 = KeyWordForm()

    return render(request, 'app/searchfield.html', {'form1':form1})

В этой части я борюсь:

result= Flight.objects.filter(destination__icontains=destination, date_options=????)

Я хочу использовать тот же параметр date_option, что и date1.Я знаю, что не могу сказать date_options = date1.Система не распознает это.

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вы можете использовать session для хранения ПК при первом использовании date1 экземпляра

date1 = DateOptions.objects.get(date=date)
flight_date = Flight.objects.filter(date_options=date1)
# Set the session variable
request.session['date1_pk'] = date1.pk

И на втором просмотре вы получите pk и отфильтруете его

result= Flight.objects.filter(destination__icontains=destination, 
            <b>date_options__pk=request.session.pop('date1_pk')</b>)
0 голосов
/ 03 июня 2018

Хорошо, я собираюсь ответить на свой вопрос.Lol Я только что нашел ответ.Мне нужно определить date1 как глобальный объект, чтобы Python распознал объект по всей области видимости.

def Date_Form(request):
    if request.method == 'POST':
        form = DateForm(request.POST)

        if form.is_valid():
            date = form.cleaned_data['date']
            global date1
            date1 = DateOptions.objects.get(date=date)
            flight_date = Flight.objects.filter(date_options=date1)

            form1 = KeyWordForm(request.POST)

            return render(request, 'app/index.html',{'flight_date': flight_date, 'date': date, 'form1': form1})

    else:
        form = DateForm()

    return render(request, 'app/options.html', {'form':form})


def Search_Destination(request):
    if request.method =='POST':
        form1 = KeyWordForm(request.POST)

        if form1.is_valid():
            destination = form1.cleaned_data['destination'].capitalize()

            result= Flight.objects.filter(destination__icontains=destination, date_options=date1)

            return render(request, 'app/search.html', {'result':result, 'destination':destination})

    else: 
        form1 = KeyWordForm()

    return render(request, 'app/searchfield.html', {'form1':form1})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...