Я очень новичок в Django, в Stackoverflow и в кодировании в целом, поэтому буду признателен за любую помощь.
Я пытаюсь добавить на свой веб-сайт форму, в которой будут только выбранные поля. После того, как пользователь выбрал все параметры, я хочу перенаправить их на другую страницу, где я возвращаю различную информацию в нескольких таблицах из моей базы данных на основе всех вариантов выбора (все выбранные параметры вместе влияют на информацию, показанную в таблицах).
Я знаю, что этот пример неуклюжий, все это сделано только для того, чтобы дать представление о том, чего я хочу достичь в итоге.
Пример:
Первая страница имеет 3 варианта:
- книга жанра
- город
- возраст
На перенаправленной странице есть три таблицы:
- Люди этого возраста читают книги этого жанра в этом городе
- Список библиотек в этом городе, отсортированный по количеству книг в этом жанре
- Как зарегистрировать 3 лучшие библиотеки
Пользователь не изменяет базу данных никоим образом, поэтому я полагаю, что форма может иметь метод GET.
Так что мой вопрос в том, что было бы лучшим способом получить значения от пользователя и получить уникальное значение на основе этого из базы данных? Я хочу вернуть один список для каждой таблицы, который я планирую регулярно обновлять для каждого города, для каждой возрастной группы и для каждого жанра.
Сейчас я пытаюсь сделать это с помощью виджета выбора. Пока я ничего не возвращаю, потому что я не уверен, как получить данные от пользователя и использовать их.
forms.py:
class MyForm(forms.Form):
select1 = forms.ChoiceField(widget=forms.Select,
choices=Select1.objects.all().values_list('id', 'name'))
select2 = forms.ChoiceField(widget=forms.Select,
choices=select2.objects.all().values_list('id', 'name'))
select3 = forms.ChoiceField(widget=forms.Select,
choices=select3.objects.all().values_list('id', 'name'))
views.py
class Page(TemplateView):
template_name = 'project/index.html'
def get(self, request):
form = MyForm()
return render(request, self.template_name, {'form': form})
HTML:
<select name="{{ form.select1.name }}">
<option class="dropdown-menu" value="" disabled selected>Please
select</option>
{% for choice in form.select1.field.choices %}
<option value="{{ select1.0 }}">{{ select1.1 }}</option>
{% endfor %}
</select>
и тот же код для двух других выбирает. Я сделал их отдельно из-за того, как я разработал сайт.