python - Django - 将用户包含在组中的问题
问题描述
在我的项目中,用户可以在注册时创建一个组。注册后,用户可以进入自己创建的群组。注册后出现此错误。我怎么解决这个问题?
/accounts/register/ 处的类型错误
需要“组”实例,得到 <-组:技术->
视图.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)Group
来自 的模型django.contrib.auth.models
,和 (2)Group
来自 的模型groups_manager.models
。
Group
您因此添加到的对象是第二 (2) 个变体user.groups.add(..)
的对象。Group
您可以通过从模块导入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'})
推荐阅读
- r - 如何在更改设置输出文件名的特定参数时将函数应用于列表
- reactjs - 变量是否也会在状态更改触发的重新渲染时更新?
- sql - 球拍。用数据库中的数据填充表
- python - 为什么我对 jpg 文件使用打印功能,它不是以 '\xff\xd8' 开头
- python - 使用 reticulate 和 python 在 shinyapps.io 上部署 shinyapps
- spring - 图ql-kotlin与DataLoader&BatchLoader的阻塞问题
- unity3d - Unity 截止着色器具有纹理的所有通道始终为 0
- unit-testing - 需要 CDI 容器的单元测试导致 java.lang.IllegalStateException: Unable to access CDI
- c - AF_XDP-Socket 与 Linux 套接字:为什么我的 AF-XDP 套接字会丢失数据包,而通用 linux 套接字却不会?
- html - 标题位置:粘性背景颜色问题