Когда я добавляю forms.ModelMultipleChoiceField
в мои ProfileUpdateForm
в forms.py
, кнопка отправки перестает функционировать и request.POST
не выполняется.
Консоль говорит
An invalid form control with name='interest' is not focusable.
Я поместил 'name':'interest'
в forms.SelectMultiple(attrs={
, но ничего.
forms.py
class ProfileUpdateForm(forms.ModelForm):
interests = Interest.objects.all()
interest = forms.ModelMultipleChoiceField(
queryset=interests,
widget = forms.SelectMultiple(attrs={
'name': "interest",
'data-placeholder': "Choose your interests",
'class': 'chosen-select',
'multiple tabindex': '4',
}))
groups = Group.objects.all()
group = forms.ModelMultipleChoiceField(
queryset=groups,
widget = forms.SelectMultiple(attrs={
'name': "group",
'data-placeholder': "Choose any groups",
'class': 'chosen-select',
'multiple tabindex': '4',
}))
class Meta:
model = Profile
fields = ['interest', 'group', 'age']
views.py
def profile_view(request):
if request.method == 'POST':
p_form = ProfileUpdateForm(request.POST,
request.FILES,
instance=request.user.profile)
if p_form.is_valid():
p_form.save()
messages.success(request, f'Your account has been updated!')
return redirect('profile')
else:
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'p_form': p_form,
}
return render(request, 'users/profile.html', context)
profile.html
<form method="POST" enctype="multipart/form-data" class='profile-form'>
{% csrf_token %}
<!-- edit Profile model info -->
{{ p_form|crispy }}
<button type="submit" value="submit">Update Profile</button>
</form>
<script>
$(".chosen-select").chosen();
$('button').click(function() {
$(".chosen-select").val('').trigger("chosen:updated");
});
</script>