gpt4 book ai didi

django - 当用户在从 UserCreation 表单继承的 UserRegister 表单上注册时,如何自动将用户添加到组

转载 作者:行者123 更新时间:2023-12-03 23:50:58 25 4
gpt4 key购买 nike

我正在尝试将用户添加到我在 django 管理员中创建的组中。如何实现我的 View 功能,以便用户在注册时添加到组中?

我创建了一个自定义 UserRegisterform,如下图所示,以便用户可以指示他们所在的组。我在实现我的 View 功能时遇到问题,以便将用户自动添加到组

我已经研究并找到了这个链接:
https://docs.djangoproject.com/en/2.2/topics/forms/
https://www.guguweb.com/2014/09/10/group-combo-box-django-user-profile-form/

已经创建了一个表单,如下所示:
表格.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import Group,User


class UserRegisterForm(UserCreationForm):
group = forms.ModelChoiceField(queryset=Group.objects.all(), required=True)
email = forms.EmailField()

class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2', 'group']

我的 views.py 文件
from django.shortcuts import render,redirect
from .forms import UserRegisterForm
from django.contrib.auth.models import Group

def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
for value in form.cleaned_data['group']:
group = Group.objects.get(name= value)
group.user_set.add(user)
form.save()
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'users/register.html', {'form':form})

当我登录管理站点时,我希望看到分配给他/她选择的组的用户。用户已添加但未分配组

最佳答案

有效。为了解决这个问题,我重构了我的观点如下:
View .py
从 django.shortcuts 导入渲染,重定向
从 .forms 导入 UserRegisterForm

def register(request):
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
user = form.save()
group = form.cleaned_data['group']
group.user_set.add(user)
return redirect('login')
else:
form = UserRegisterForm()
return render(request, 'users/register.html', {'form':form})

关于django - 当用户在从 UserCreation 表单继承的 UserRegister 表单上注册时,如何自动将用户添加到组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57986332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com