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



我正在使用django-groups-manager。

在我的项目中,用户可以在注册时创建组。注册后,用户可以输入他创建的组。注册后我收到此错误。如何解决这个问题?

类型错误在/帐户/注册/

"组"实例预期,已<组:技术>

views.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.modelsGroup模型,以及(2(来自groups_manager.modelsGroup模型。

因此,您添加到user.groups.add(..)Group对象是第二 (2( 变体的Group对象。您可以通过从django.contrib.auth.models模块导入Group模型来解决此问题,例如通过其他名称:

from groups_manager.models import Group, GroupType, Member
from django.contrib.auth.models import Group asAGroup
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'})

最新更新