Django Ошибка: выберите правильный выбор. <choice>не является одним из доступных вариантов - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь использовать поле выбора для всех пользователей, чтобы добавить разрешения для роли. Права доступа определены в их собственном классе и правильно отображаются в раскрывающемся списке, однако при отправке формы указывается, что выбранный параметр недоступен.

forms.py

from django import forms
from .models import RolePermission, Permission


class AddPermissionForm(forms.ModelForm):
    class Meta:
        model = RolePermission
        fields = ['permission']

    permission = forms.ChoiceField(choices=Permission.choices)

    def __init__(self, *args, **kwargs):
        super(AddPermissionForm, self).__init__(*args, **kwargs)
        self.fields['permission'].widget.attrs.update({'class': 'form-control'})

views.py

def role_view(request, role_id):
    role = Role.objects.get(id=role_id)

    add_permission_form = AddPermissionForm(request.POST)
    if request.method == 'POST' and add_permission_form.is_valid():
        new_permission = add_permission_form.cleaned_data['permission']

        # is_already_permission = RolePermission.objects.filter(role_id=role_id, permission=new_permission)
        # if is_already_permission:
        new_role_permission = RolePermission(role_id=role_id, permission=new_permission)
        new_role_permission.save()

        return redirect('core:role_view role_id=role_id')

    return render(request, 'role_view.html', {'role': role, 'form': add_permission_form})

Класс разрешений

class Permission(models.TextChoices):
    PAGE_CREATE = 111
    PAGE_EDIT = 112
    PAGE_PUBLISH = 113
    PAGE_DELETE = 114

Имею попытался изменить поле выбора на поле выбора, но это не решило проблему.

...