Недопустимый элемент управления формы с именем = «интереса» не фокусируется Джанго - PullRequest
0 голосов
/ 17 февраля 2019

Когда я добавляю 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>
...