Как передать данные одного из полей формы на другую страницу, используя представления на основе классов в Python/Django?
Я работаю над проектом, в котором я представляю пользователю форму с вопросом о его спортивных интересах, чтобы помочь ему найти местных игроков для игры. Затем я хочу вернуть других пользователей, которые занимаются тем же видом спорта. Я использую CreateView при представлении этой формы и имею одну модель под названием UserCharacteristics, задающую эти вопросы. Я хочу передать вид спорта, который выбрал пользователь, в представление ShowMatched, чтобы я мог отфильтровать результат на основе совпадения/одного и того же вида спорта. В файле views.py для первого представления на основе класса я делаю:
class EnterInfo(LoginRequiredMixin, CreateView):
template_name = 'myapp/enterinfo.html'
fields = ['name', 'age', 'cityfrom', 'gender', 'sport']
model = UserCharacteristics
def form_valid(self, form):
form.instance.user = self.request.user
return super(EnterInfo, self).form_valid(form)
def get_success_url(self):
return reverse('showmatched', kwargs={'sport': self.kwargs['sport'] })
Для второго представления на основе класса в файле views.py я делаю:
class ShowMatched(TemplateView):
template_name = 'myapp/showmatched.html'
model = UserCharacteristics
context_object_name = 'allentries'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['allentries'] = UserCharacteristics.objects.filter(kwargs = {'sport' : self.sport})
return context
В urls.py я делаю:
path('enterinfo/', EnterInfo.as_view(), name='enterinfo'),
path('showmatched/<str:sport>/', ShowMatched.as_view(), name ='showmatched'),
В файле enterinfo.html я делаю:
<p>You are logged in as: {{request.user}}</p>
<form action="{% url 'showmatched' sport.id %}" method="post"></form>
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Find a Match">
</form>
В файле showmatched.html я делаю:
<h1>Displaying matched sports results below</h1>
{% for entry in allentries %}
{{ entry }}
{% endfor %}
Цель - отобразить пользователей, у которых одинаковый вид спорта, на следующей странице (showmatched.html). Любая помощь будет очень признательна! Спасибо.