Я пытаюсь использовать поле выбора для всех пользователей, чтобы добавить разрешения для роли. Права доступа определены в их собственном классе и правильно отображаются в раскрывающемся списке, однако при отправке формы указывается, что выбранный параметр недоступен.
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
Имею попытался изменить поле выбора на поле выбора, но это не решило проблему.