Django 注册组:组匹配查询不存在
Django registration with groups: Group matching query does not exist
我试图在注册表单中分配组权限,但出现此错误:
组匹配查询不存在。
forms.py:
class RegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False)
last_name = forms.CharField(max_length=30, required=False)
Group = [('Viewers', 'Viewers'), ('Editors', 'Editors'), ('Creators', 'Creators'), ]
group_name = forms.ChoiceField(choices=Group)
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', 'group_name', )
views.py:
def registerView(request):
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save()
group = Group.objects.get(name='group_name')
user.groups.add(group)
return redirect('accounts:users')
else:
form = RegisterForm()
return render(request, 'accounts/register.html', {'form': form})
错误发生在group = Group.objects.get(name='group_name')。
不知道如何修复它
group = Group.objects.get(name=request.POST.get('group_name'))
or form.cleaned_data['group_name']
当您从表单中获取输入时,您需要访问表单中的字段以获取该输入名称的值。
我试图在注册表单中分配组权限,但出现此错误:
组匹配查询不存在。
forms.py:
class RegisterForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=False)
last_name = forms.CharField(max_length=30, required=False)
Group = [('Viewers', 'Viewers'), ('Editors', 'Editors'), ('Creators', 'Creators'), ]
group_name = forms.ChoiceField(choices=Group)
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2', 'group_name', )
views.py:
def registerView(request):
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save()
group = Group.objects.get(name='group_name')
user.groups.add(group)
return redirect('accounts:users')
else:
form = RegisterForm()
return render(request, 'accounts/register.html', {'form': form})
错误发生在group = Group.objects.get(name='group_name')。 不知道如何修复它
group = Group.objects.get(name=request.POST.get('group_name'))
or form.cleaned_data['group_name']
当您从表单中获取输入时,您需要访问表单中的字段以获取该输入名称的值。