Я работаю над двумя связанными полями формы (Class
и Students
), где пользователь выбирает класс из раскрывающегося меню, а затем обновляет поле формы студентов с соответствующим списком студентов.
У меня все это работает с логикой AJAX, кроме ... кроме ... Я столкнулся с некоторым странным поведением при попытке применить атрибут selected
к тегам <option>
.
views.py
def load_students(request):
classid = request.GET.get('classid')
contractid = request.GET.get('contractid')
# Lookup students for given class
students = Student.objects.getclass(classid=classid)
if(contractid):
# Generate list of students associated with this contract
contract_party_list = []
contract_parties = ContractParty.objects.get_contract_parties(
contractid=contractid
)
for mycontractparty in contract_parties:
contract_party_list.append(mycontractparty.partyuserid)
# Generate new student list (with appended contract user info)
student_list = []
for mystudent in students:
# Set flag to determine whether student is part of contract
if(mystudent.studentuserid in contract_party_list):
selectedFlag = True
else:
selectedFlag = False
# Add updated student info to new student list
student_list.append(
{
'studentuserid':mystudent.studentuserid,
'firstname':mystudent.firstname,
'lastname':mystudent.lastname,
'selectedFlag': selectedFlag
}
)
students = student_list
return render(request, 'dropdown_ajax.html', {'students': students})
dropdown_ajax.html
{% if students %}
{% for student in students %}
<option
value="{{ student.studentuserid }}"
{% if student.selectedFlag %} selected="selected"{% endif %}
>
{{ student.firstname }} {{ student.lastname }}
</option>
{% endfor %}
{% endif %}
Эта строка вызывает у меня проблемы: {% if student.selectedFlag %} selected="selected"{% endif %}
Странное поведение заключается в том, что атрибут «выбранный» никогда не применяется, даже если student.selectedFlag
имеет значение True.
Пара вещей, которые я пробовал:
Я переместил строку выше тега, чтобы посмотреть, что он будет делать. Для правильного ввода отображается текст «выбрано».
Я заменил if student.selectedFlag
на if student.studentuserid == 1
, и в поле был выбран правильный студент.
Я передал "True" / "Ложные и числовые значения для selectedFlag
вместо логического значения. Я попытался if student.selectedFlag == "True"
. Ничего.
Я не уверен, что вызывает такое поведение. Полагаю, это связано с тем, что булевы переменные Django не корректно вычисляются в полях <option>
.