【问题标题】:I had 'NoneType' object has no attribute 'groups' in django我有 'NoneType' 对象在 django 中没有属性 'groups'
【发布时间】:2021-03-21 12:39:55
【问题描述】:

我是 django 的新手,我只是有错误,/registro/ 'NoneType' 对象的 AttributeError 没有属性 'groups',但我的表单正在保存所有数据

views.py

def register(request):
    if request.method == 'POST':
        form = CreateUserForm(request.POST)
        
        if form.is_valid():
            ui = User()
            ui.username = request.POST.get('username')
            ui.password = request.POST.get('password')
            ui.first_name = request.POST.get('first_name')
            ui.last_name = request.POST.get('last_name')
            ui.email = request.POST.get('email')
            # user = User.objects.create_user(username=username,first_name=first_name,last_name=last_name,email=email,password=password)
            user = ui.save()
            obj = User.objects.latest('id')
            cli = Client_profile_master()
            cli.first_name = request.POST.get('first_name')
            cli.last_name = request.POST.get('last_name')
            cli.email = request.POST.get('email')
            cli.mobile_no = request.POST.get('mobile')
            cli.address_1 = request.POST.get('address1')
            cli.address_2 = request.POST.get('address2')
            cli.image=request.FILES.get('image')
            cli.user=obj
            # emp.save()
            # client = Client_profile_master.objects.create(first_name=first_name,last_name=last_name,email=email,mobile=mobile,address1=address1,address2=address2,image=image,user=obj)
            cli.save()
            username = form.cleaned_data.get('username')
            group = Group.objects.get(name='Client')
            user.groups.add(group)

            messages.success(
                request, f'Account created successfully for {username} !!!')
            return redirect('login')
        else:
            return redirect('/')
    else:
        form = CreateUserForm()
    return render(request, 'sites/register.html', {'form': form})

【问题讨论】:

    标签: python html django forms view


    【解决方案1】:

    此行出现错误:user = ui.save(),模型的保存方法不返回任何内容(或返回None),因此user 的值是None。简单的解决方法是使用ui.groups.add(group)

    但是您可以通过使用您已经在使用的表单以及添加新表单来大大改进您的实现。例如:

    # form
    class CliForm(forms.ModelForm):
        class Meta:
          model = ClientProfileMaster # Using camelcase when declairing class name
          exclude = ["user",]
    
    # view
    form = CreateUserForm(request.POST)
    cli_form = CliForm(request.POST, request.FILES)
    if form.is_valid() and cli_form.is_valid():
        user = form.save()
        cli = cli_form.save(commit=False)
        cli.user = user
        cli.save()
    

    欲了解更多信息,请django modelform's documentation

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 2014-10-24
      • 2016-04-23
      相关资源
      最近更新 更多