Python Django-将用户包括在组中的问题

Python 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

我正在使用

在我的项目中,用户可以在注册时创建一个组。注册后,用户可以输入他创建的组。我注册后出现了这个错误。我怎样才能解决这个问题

在/帐户/注册表中输入错误/

应为“组”实例,已获取

视图.py

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
对应对象。