Как получить информацию из поля опции в django?
У меня есть приложение django с аутентификацией и выпадающим меню внутри. Раньше я делал это так:
<select name="country" id="id_category" data="{{ data.country }}">
{% for each in living_countries_list %}
<option name="country" value="{{ each.0 }}" class="living_countries">{{ each.1 }}</option>
% endfor %}
</select>
Теперь я изменил его на:
<input list="brow" placeholder="Search for your country..." class="input_country">
<datalist id="brow">
{% for each in living_countries_list %}
<option name="country" value="{{ each.0 }}" class="living_countries">{{ each.1 }}</option>
{% endfor %}
</datalist>
<p class="country_text">Please select your living country</p>
В моем файле views.py я передал контекст следующим образом:
country = request.POST.get('country')
professors = models.Professor.objects.all()
living_countries_list = LIVING_COUNTRIES
print(country)
В models.py у меня есть такие опции, как:
LIVING_COUNTRIES = [
('AFGANISTAN', 'Afganistan'),
('ALBANIA', 'Albania'),
('ALGERIA', 'Algeria'),
('ANGORRA', 'Andorra'),
('ANGOLA', 'Angola')]
class Professor(models.Model):
country_living = models.CharField(max_length=50, choices=LIVING_COUNTRIES, default=FRESHMAN, blank=True, null=True)
Итак, у меня есть несколько вариантов, которые отображаются в любом случае, но в измененном я могу вводить ввод, и это то, что я хочу иметь возможность делать.
Если вы хотите, чтобы я опубликовал что-то еще, дайте мне знать в комментариях
В django не нужно создавать формы традиционными методами. Создайте первый FormSet в views.py:
from django.shortcuts import render
from . import models
from django.forms import modelformset_factory
def formpageview(request):
ProfessorFormSet = modelformset_factory(models.Professor, fields=('country_living',))
if request.method == 'POST':
formset = ProfessorFormSet(request.POST, request.FILES)
if formset.is_valid():
formset.save()
# do something.
else:
formset = ProfessorFormSet()
return render(request, 'form.html', {'formset': formset})
и затем используйте этот набор форм в файле form.html:
<form method="post">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{{ form }}
{% endfor %}
<button type='submit'>Submit</button>
</form>
Вам следует просмотреть документацию