У меня есть приложение django (2.0) со страницей, которая содержит две отдельные формы, которые вообще не предназначены для взаимодействия друг с другом. Тем не менее, я получаю странное поведение. Изображено здесь , когда я нажимаю на одну из меток в нижней форме, она вызывает флажок для соответствующего (основанного на строке, а не имени) элемента в верхней форме (нажимая «члены» в группе Форма выбрана "Электронная почта" на форму лица). Это происходит только в одном направлении - нажатие в любом месте верхней формы никогда не влияет на нижнюю форму. Проверка фактических блоков нижней формы вызывает ожидаемые поля, которым соответствуют их метки.
HTML-код для этой страницы:
<head>
{% load static %}
<title>LDAP - Search</title>
<link rel="shortcut icon" href="{% static 'djangoWrapper/favicon.ico' %}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" integrity="sha384-WskhaSGFgHYWDcbwN70/dfYBj47jz9qbsMId/iRN3ewGhXQFZCSftd1LZCfmhktB" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="{% static 'ldap/style.css' %}">
</head>
<body>
<h1>Search</h1>
<div class="search-form">
<h2>Search for Person</h2>
<form action="{% url 'ldap:person_results' %}" method='post'>
{% csrf_token %}
<table>
{{ personForm }}
</table>
<input type="submit" value="Search">
</form>
</div>
<div class="search-form">
<h2>Search for Group</h2>
<form action="{% url 'ldap:group_results' %}" method='post'>
{% csrf_token %}
<table>
{{ groupForm }}
</table>
<input type="submit" value="Search" />
</form>
</div>
<div class="url">
<a href="{% url 'ldap:index' %}">or go back to login</a>
</div>
</body>
И формы
class PersonSearchForm(forms.Form):
uniqname = forms.CharField(label="uniqname", max_length=10)
options = personFieldsDict.items()
attributes = forms.MultipleChoiceField(
widget=forms.CheckboxSelectMultiple, choices = options, label='',
required=False)
class GroupSearchForm(forms.Form):
groupName = forms.CharField(label='Group Name')
options = groupFieldsDict.items()
attributes = forms.MultipleChoiceField(
widget=forms.CheckboxSelectMultiple, choices = options, label='',
required=False)
И представление, которое отображает эту страницу просто:
def search(request):
personForm = PersonSearchForm()
groupForm = GroupSearchForm()
context = {'personForm': personForm, 'groupForm': groupForm}
return render(request, 'ldap/search.html', context)
Я предполагаю, что это как-то связано с тем фактом, что обе формы используют виджет MultipleChoiceField
, но я не вижу, как они взаимодействуют друг с другом, если их атрибуты разные и они разные div
s. Любая идея о том, почему существует это взаимодействие? Спасибо.