Django отображает значения строки поиска в виде флажков множественного выбора и затем передает их в базу данных через форму
У меня есть форма, которая собирает дополнительную информацию о пользователе, и одно из ее полей является отношением ManyToMany (оно хранит данные о горнолыжных курортах), и я хочу следующее :
- сделать для поля ManyToMany, из формы, строку поиска.
- отобразить все искомые элементы в виде флажков .
- затем проверить (если нужно) и отправить их Как я должен к этому подойти? Я сделал следующее
views.py
class CreateInfoView(CreateView):
model = AdditionalInfoModel
form_class = AdditionallnfoModelForm
template_name = "user_ski_experience/additional_info.html"
def get_form_kwargs(self):
variable_to_send = super(CreateInfoView, self).get_form_kwargs()
variable_to_send.update({'pk': None})
variable_to_send.update({'pk_user': self.request.user.id})
return variable_to_send
def get_success_url(self):
return reverse('login')
class SearchResultsView(ListView):
model = AdditionalInfoModel
template_name = 'user_ski_experience/search_results.html'
def get_queryset(self):
q = self.request.GET.get('q', '')
selected_resorts = Resorts.objects.filter(name__icontains = q)
return selected_resorts
forms.py
class AdditionallnfoModelForm(forms.ModelForm):
class Meta:
model = AdditionalInfoModel
fields = '__all__'
widgets = {'user': forms.HiddenInput(),
'resort_choice': forms.SelectMultiple()}
def __init__(self, pk, *args, **kwargs):
pk_user = kwargs.pop('pk_user', None)
super(AdditionallnfoModelForm, self).__init__(*args, **kwargs)
self.pk = pk
self.fields['user'].disabled = True
self.fields['user'].initial = User.objects.last()
for el in self.fields:
self.fields[el].label = False
def clean(self):
return self.cleaned_data
additional_info.html
<body>
<form method = "post">
{% csrf_token %}
<h1> Let's get started with some questions ! </h1>
<h2> This will help us get to know your ski experience </h2>
<p> {{form.user|as_crispy_field}} </p>
<li> What country do you live in ? {{form.country|as_crispy_field}} </li>
<li> What city do you live in ? {{form.city|as_crispy_field}} </li>
<li> How would you rank yourself as a skier ?
{{form.assumed_technical_ski_level|as_crispy_field}} </li>
<li> How many years of ski experience do you have ?
{{form.years_of_experience|as_crispy_field}} </li>
<li> How much ar you willing to spend ?
{{form.money_to_spend|as_crispy_field}} </li>
<li> {{form.resort_choice|as_crispy_field}} </li>
<br>
<br>
{{form.errors}}
<button id = "1" type="submit" onclick = "{% url 'login' %}">Submit</button>
</form>
<form action="{% url 'user_ski_experience:search' %}" method="get">
<input name="q" type="text" placeholder="Search...">
</form>
<br>
</body>
search_results.html
<body>
<form method = "Post">
{% csrf_token %}
{% for el in object_list %}
<input type = "checkbox" id = "resorts1" name = "resorts" value = "a">
<label for = "resorts1"> {{el.name}} </label>
<br>
{% endfor %}
<button type="submit">Submit</button>
</form>
</body>
Я бы хотел, чтобы значения, проверенные при поиске, отображались на странице additional_info.html, а затем подставлялись в базу данных. Например, значения, показанные на этом изображении search_bar.htm должны отображаться в additional info form html и иметь возможность проверить их