Я очень новичок в Django, Stackoverflow и кодировании в целом, поэтому буду признателен за любую помощь.
Я пытаюсь добавить на свой веб-сайт форму, в которой будут только поля выбора. После того, как пользователь выберет все параметры, я хочу перенаправить их на другую страницу, где я возвращаю различную информацию в нескольких таблицах из моей базы данных на основе всех выбранных параметров (все выбранные параметры вместе влияют на информацию, отображаемую в таблицах).
Я знаю, что этот пример неудобен, все это сделано для того, чтобы дать представление о том, чего я хочу достичь в итоге.
Пример: На первой странице есть 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>
и тот же код для двух других выбирает. Я визуализировал их отдельно из-за того, как я спроектировал сайт.
Вам нужно будет создать представление / метод, на который будет отправляться форма. В этом представлении вы можете получить доступ к форме stackoverflow.com/questions/4706255/…
@jastr спасибо за ответ! Я прочитал официальную документацию по виджету выбора, и я просмотрел несколько сообщений о добавлении метода публикации в представления, но не смог найти, как перенаправить на другой шаблон и сохранить выбранные варианты. Меня также смутило, как это должно выглядеть на стороне базы данных, так как я никогда раньше не работал с базами данных, но, думаю, я просто продолжу поиск. "if form.is_valid ()" по какой-то причине никогда не является истинным с этим кодом.
Учебник по django (а не только документация) покажет вам, как эти части сочетаются друг с другом. Кроме того, вместо использования представления на основе классов, такого как TemplateView, вы можете написать обычное представление, которым, возможно, будет проще манипулировать.






Чтение выбранных форм и их использование для поиска в базе данных и отображения результатов - стандартный шаблон в Django. Я рекомендую пройти учебник по Django - почти каждый учебник по Django будет посвящен этому.