Назначение пользовательской роли пользователю
Я новичок в django и пытаюсь создать веб-приложение для своей задачи. Я пытаюсь назначить роли каждому пользователю. Но у меня возникает ошибка. введите описание изображения здесь
Моя модель
class Rol(Group):
state = models.BooleanField(default=True)
description = models.CharField(max_length=200)
permission = models.ManyToManyField(Permission)
def __str__ (self):
return '{}'.format(self.state,self.description, self.permission)
В этой части у меня нет никаких проблем, разрешение назначено на rol
Но вот Моя модель:
class User(AbstractUser):
state = models.BooleanField(default=True)
roles = models.ManyToManyField(Rol)
def __str__ (self):
return '{}'.format(self.username,self.state,self.roles)
Моя форма:
class UserForm(UserCreationForm):
username = forms.CharField(label="User",widget=forms.TextInput(attrs=
{"class":"form-control"}))
password1 = forms.PasswordInput()
password2 = forms.PasswordInput()
state = forms.CheckboxInput()
roles =forms.ModelMultipleChoiceField(label="Roles",queryset=Group.objects.all(),
widget=forms.CheckboxSelectMultiple)
class Meta:
model = User
fields = [
"username",
"password1",
"password2",
"activo",
"roles"
]
В ролях перечислены роли, созданные, но не назначенные пользователю на момент сохранения, он показывает мне ошибку:
- Поле 'id' ожидало число, но получило <Group: standart>.
- Приведенное выше исключение (аргумент int() должен быть строкой, байтоподобным объектом или действительным число, а не 'Group') было непосредственной причиной следующего исключения:
Выделите эту строку
- form.save_m2m()
Мое мнение
def create_user(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
form2=form.save(commit=False)
form2.save()
form.save_m2m()
return redirect('list_user')
return render(request, 'user/user_form.html',{'form': form})
else:
form = UserForm()
return render(request, 'user/user_form.html',{'form': form})
OBS: Но в моей пользовательской форме при изменении набора ролей: Group by Rol, он назначает роли, но не перечисляет имена, только состояния