Как передать данные одного из полей формы на другую страницу, используя представления на основе классов в 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). Любая помощь будет очень признательна! Спасибо.

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