Я нахожусь в своем последнем проекте и немного не понимаю, что делаю сейчас. Я разрабатываю веб-сайт, и мне нужно вставить некоторые варианты в тег выбора html, я имею в виду, что варианты должны быть параметрами этого тега выбора. Я пытаюсь это сделать, но раскрывающийся список не отображается должным образом, и когда я пытаюсь отправить форму, появляется сообщение об ошибке. Я бы хотел, чтобы ты мне помог, я схожу с ума. Здесь я оставляю свой код, не стесняйтесь спрашивать все, что хотите
forms.py
class FormCancion(forms.ModelForm):
NOTAS_CHOICES=(('35','Acoustic Bass Drum'),('36','Bass Drum 1'),('37','Side Stick'),('38','Acoustic Snare'),('39','Hand Clap'),
('40','Electric Snare'),('41','Low Floor Tom'),('42','Closed Hi Hat'),('43','High Floor Tom'),('44','Pedal Hi-Hat'),
('45','Low Tom'),('46','Open Hi-Hat'),('47','Low-Mid Tom'),('48','Hi-Mid Tom'),('49','Crash Cymbal 1'),('50','High Tom'),
('51','Ride Cymbal 1'),('52','Chinese Cymbal'),('53','Ride Bell'),('54','Tambourine'),('55','Splash Cymbal'),
('56','Cowbell'),('57','Crash Cymbal 2'),('58','Vibraslap'),('59','Ride Cymbal 2'),('60','Hi Bongo'),('61','Low Bongo'),
('62','Mute Hi Conga'),('63','Open Hi Conga'),('64','Low Conga'),('65','High Timbale'),('66','Low Timbale'),('67','High Agogo'),
('68','Low Agogo'),('69','Cabasa'),('70','Maracas'),('71','Short Whistle'),('72','Long Whistle'),('73','Short Guiro'),
('74','Long Guiro'),('75','Claves'),('76','Hi Wood Block'),('77','Low Wood Block'),('78','Mute Cuica'),('79','Open Cuica'),
('80','Mute Triangle'),('81','Open Triangle'))
nota_pad_gris = forms.ChoiceField(choices=NOTAS_CHOICES, widget=forms.Select())
views.py:
def crearCancion(request):
cancion=Cancion()
if request.method= = "POST":
formulario=FormCancion(request.POST,request.FILES,instance=cancion)
if formulario.is_valid():
formulario.save()
return HttpResponseRedirect('/ListadoCanciones/')
else:
formulario=FormCancion()
context = {'formulario':formulario}
return render(request,"nuevaCancion.html",context)
.html:
<br><br><br>
<div class = "container">
<form id='formulario' method='post' {% if formulario.is_multipart %} enctype = "multipart/form-data" {% endif %} action=''>
{% csrf_token %}
<center>
<label for = "nota_pad_gris">Nota del pad Gris:</label>
<select id = "nota_pad_gris" onchange = "validar();">
{% for value in formulario.nota_pad_gris %}
<option value = "hola">{{ value }}</option>
{% endfor %}
</select>
<br><br>
<p><input type='submit' class = "btn btn-success btn-lg" value='Añadir'/>
<a href = "/ListadoCanciones/" type = "input" class = "btn btn-danger btn-lg">Cancelar</a></p>
</center>
</form>
<br>
</div>
Редактировать:
Посмотрите на Nota del pad gris. Это то, что показывает список. Он показывает варианты выбора, но также показывает пустое пространство между вариантами.
[
Это ошибка, которую выдает мне в Интернете, когда я пытаюсь отправить форму

Не могли бы вы опубликовать ошибку, возможно, это вызвано тем, что вы не указали имя для поля выбора.
Я только что обновил сообщение, добавив несколько изображений, ошибку, которую я получаю, и то, что показано в раскрывающемся списке. @PankajSharma
Может проблема в том, что вы говорите, знаете ли вы, как это решить? @ChetanGanji
Да. Повторите выбор в параметрах выбора, визуализируйте форму с помощью form.as_p и посмотрите, работает ли она нормально. Если да, откройте инструменты разработчика Chrome, скопируйте необработанный HTML-код этой части и вставьте его помимо приведенного выше кода в свои HTML-файлы. Сравните и противопоставьте и бинго, вы решили свою проблему.
Повторите ошибку формы, после отправки формы вы перенаправляетесь на новый URL-адрес. HttpResponseRedirect ('/ ListadoCanciones /'). Этот URL-адрес не возвращает HTTP-ответ. Найдите ответ метода get по указанному выше URL. Я бы просто вернул перенаправление (reverse ("url-name"))






Прежде всего попробуйте с {{form.as_p}}, чтобы увидеть, работает он или нет. Я думаю, что проблема заключается в этом {<option value = "hola"> {{value}} </option>} value = "hola" гарантирует, что все записи в выборе будут иметь то же значение, что и hola.