实干家:获得;组匹配查询不存在。”;保存Django的UserCreationForm时出错

实干家:获得;组匹配查询不存在。”;保存Django的UserCreationForm时出错,django,django-views,django-forms,django-authentication,django-auth-models,Django,Django Views,Django Forms,Django Authentication,Django Auth Models,我正在尝试保存Django内置的auth应用程序表单的UserCreationForm,使用forms.py中的以下命令 from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User from django import forms from .models import * class CreateUserForm(UserCreationForm):

我正在尝试保存Django内置的
auth
应用程序表单的
UserCreationForm
,使用
forms.py中的以下命令

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms
from .models import *
class CreateUserForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']
我的未经认证的装饰师是:

def unauthenticated_user(view_func):
    def wrapper_func(request, *args, **kwargs):
        if request.user.is_authenticated:
            return redirect('home')
        else:
            return view_func(request, *args, **kwargs)
    return wrapper_func
视图功能如下所示:

@unauthenticated_user
def registerPage(request):
    form = CreateUserForm() 
    if request.method == 'POST':
        form = CreateUserForm(request.POST)
        if form.is_valid():
            user = form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, 'Account was created for ' + username)
            return redirect('login')
    context = {'form':form}
    return render(request, 'accounts/register.html', context)
完全回溯是:

Traceback (most recent call last):
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/jatinsinghbhati/Documents/workspaces/pollsite/accounts/decorators.py", line 9, in wrapper_func
    return view_func(request, *args, **kwargs)
  File "/Users/jatinsinghbhati/Documents/workspaces/pollsite/accounts/views.py", line 26, in registerPage
    user = form.save()
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/contrib/auth/forms.py", line 138, in save
    user.save()
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/contrib/auth/base_user.py", line 67, in save
    super().save(*args, **kwargs)
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/db/models/base.py", line 753, in save
    self.save_base(using=using, force_insert=force_insert,
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/db/models/base.py", line 801, in save_base
    post_save.send(
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 177, in send
    return [
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/dispatch/dispatcher.py", line 178, in <listcomp>
    (receiver, receiver(signal=self, sender=sender, **named))
  File "/Users/jatinsinghbhati/Documents/workspaces/pollsite/accounts/signals.py", line 10, in customer_profile
    group = Group.objects.get(name='customer')
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/jatinsinghbhati/Documents/workspaces/djangoenv/lib/python3.9/site-packages/django/db/models/query.py", line 429, in get
    raise self.model.DoesNotExist(

Exception Type: DoesNotExist at /accounts/register/
Exception Value: Group matching query does not exist.
我的
signals.py
文件:

from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from .models import Customer
def customer_profile(sender, instance, created, **kwargs):
    if created:
        group = Group.objects.get(name='customer')
        instance.groups.add(group)
        Customer.objects.create(
            user=instance,
            name=instance.username,
            )
        print('Profile created!')
post_save.connect(customer_profile, sender=User)
请帮我做这个。请注意,它正在成功地将值保存到SQL DB中,但返回此错误,并且不会向前移动
user=form.save()
line


非常感谢您的帮助。谢谢

似乎没有
name='customer'
在一起。您应该使用确保这样的组存在。一种方法是使用该方法获取对象(如果该对象存在),或者创建并获取该对象:

def customer_profile(sender, instance, created, **kwargs):
    if created:
        group, created = Group.objects.get_or_create(name='customer')
        instance.groups.add(group)
        Customer.objects.create(
            user=instance,
            name=instance.username,
            )
        print('Profile created!')

您在用户的创建上有一些信号。请把它们添加到问题中。根据错误
group=group.objects.get(name='customer')
此查询失败,因为没有这样的组。@AbdulAzizBarkat添加了我的信号文件谢谢帮助!尝试此操作,但得到相同的错误。我可以分享更多的细节吗?让我知道。@JatinSinghBhati您做了更改并重新启动了服务器吗?是的,但它没有工作。@JatinSinghBhati的错误是相同的吗?如果您按照我的回答更改了信号(如果它是正确的信号),则这是不可能的。请注意,它仍然与组有关,但在观察到回溯时略有更改:异常类型:TypeError at/accounts/register/Exception Value:字段“id”应为数字,但得到(,False)。你能帮我解决这个问题吗?
def customer_profile(sender, instance, created, **kwargs):
    if created:
        group, created = Group.objects.get_or_create(name='customer')
        instance.groups.add(group)
        Customer.objects.create(
            user=instance,
            name=instance.username,
            )
        print('Profile created!')