Python Django-将用户包括在组中的问题
我正在使用 在我的项目中,用户可以在注册时创建一个组。注册后,用户可以输入他创建的组。我注册后出现了这个错误。我怎样才能解决这个问题 在/帐户/注册表中输入错误/ 应为“组”实例,已获取 视图.pyPython Django-将用户包括在组中的问题,python,django,Python,Django,我正在使用 在我的项目中,用户可以在注册时创建一个组。注册后,用户可以输入他创建的组。我注册后出现了这个错误。我怎样才能解决这个问题 在/帐户/注册表中输入错误/ 应为“组”实例,已获取 视图.py from groups_manager.models import Group, GroupType, Member def register_view(request): form = RegisterForm(request.POST or None) if form.is_v
from groups_manager.models import Group, GroupType, Member
def register_view(request):
form = RegisterForm(request.POST or None)
if form.is_valid():
user = form.save()
new_group_name = form.cleaned_data['new_group_name']
new_group, created = Group.objects.update_or_create(name=new_group_name)
user.groups.add(Group.objects.get(name=new_group_name))
user.save()
password = form.cleaned_data.get('password1')
new_user = authenticate(username=user.username, password=password)
login(request, new_user)
return redirect('home')
return render(request, 'accounts/form.html', {'form': form, 'title': 'Üye Ol'})
代码中有问题的地方:
user.groups.add(Group.objects.get(name=new_group_name))
您在这里混合了两个同名的模型:(1)来自
django.contrib.auth.models
的组
模型,以及(2)来自组管理器.models
的组
模型
因此添加到user.groups.add(..)
的Group
对象是第二(2)个变量的Group
对象。您可以通过从django.contrib.auth.models
模块导入组
模型来解决此问题,例如通过不同的名称:
from groups_manager.models import Group, GroupType, Member
from django.contrib.auth.models import Group as AGroup
def register_view(request):
form = RegisterForm(request.POST or None)
if form.is_valid():
user = form.save()
new_group_name = form.cleaned_data['new_group_name']
new_group, created = Group.objects.update_or_create(name=new_group_name)
user.groups.add(AGroup.objects.get(name=new_group_name))
user.save()
password = form.cleaned_data.get('password1')
new_user = authenticate(username=user.username, password=password)
login(request, new_user)
return redirect('home')
return render(request, 'accounts/form.html', {'form': form, 'title': 'Üye Ol'})
来自组\u manager.models导入组、组类型、成员
从django.contrib.auth.models导入组作为AGroup
def寄存器_视图(请求):
表单=注册表执行(request.POST或None)
如果form.is_有效():
user=form.save()
新建组名称=表单。已清理的组数据['new\u group\u name']
新建组,已创建=组。对象。更新组或创建(名称=新建组\u名称)
user.groups.add(AGroup.objects.get(name=new\u group\u name))
user.save()
password=form.cleaned\u data.get('password1'))
新用户=验证(用户名=user.username,密码=密码)
登录(请求,新用户)
返回重定向('home')
返回render(请求'accounts/form.html',{'form':form,'title':'ye Ol'})
您正在混合两个组
模型:Django的contrib.auth.models中的组
模型和组(manager.models
@WillemVanOnsem Django)组(manager中的一个具有“Django auth sync”功能。创建的组也添加到普通组中。我必须遵循什么样的路径?是的,模型是同步的。但是您的Group.objects.get(…)
查询仍将检索groups\u管理器Group
模型对象,而不是其django.contrib.auth
对应对象。