RelatedObjectsDoeTexister at/User没有客户

2024-03-29 04:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

RelatedObjectDoesNotExist at / User has no customer.

我在注册用户并尝试登录后出现此错误。我只能与我创建的超级用户登录,但不能与我注册的新用户登录

views.py

    def register(request):
        if request.method == 'POST':
            form = UserCreationForm(request.POST)
            if form.is_valid(): 
                #saving the registered user
                form.save()
                
    
                username= form.cleaned_data.get('username') 
                messages.success(request, f'Your Account has been created! You can now log in')
                return redirect('login')
        else:
            form = UserCreationForm() #creates an empty form
        return render(request, 'store/register.html', {'form': form})
    
    
    #THIS IS THE ERROR IT LEADS ME TO 
    def store(request):
    
        data = cartData(request)
        cartItems = data['cartItems']
    
    
        products = Product.objects.all()  # getting all the products
        context = {
            'products': products,
            'cartItems': cartItems
            }  # allows us to use in our template
        return render(request, 'store/store.html', context)

models.py

    class Customer(models.Model):
     
        user=models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
    
        name=models.CharField(max_length=50, null=True)
        email=models.CharField(max_length=200)
    
        def __str__(self):
            return self.name #this will show on our admin panel

error page


Tags: store用户pyformregistertruedatareturn
2条回答

创建用户时,应为此用户创建客户,例如:

if request.method == 'POST': 
    form = UserCreationForm(request.POST) 
    if form.is_valid(): 
        #saving the registered user
        user = form.save()
        username= form.cleaned_data.get('username')
        #create customer
        Customer.objects.create(user=user, name=username, email=user.email)
        ...

更改模型类用户字段,如下所示:

user=models.OneToOneField(
    User,
    null=True,
    blank=True,
    on_delete=models.CASCADE,
    related_name="customer"
)

以及您的注册视图:


 def register(request):
        if request.method == 'POST':
            form = UserCreationForm(request.POST)
            if form.is_valid(): 
                #saving the registered user
                user = form.save()
                Customer.objects.create(
                    user = user,
                    name = user.username,
                    email = user.email
                )    
                username= form.cleaned_data.get('username') 
                messages.success(request, f'Your Account has been created! You can now log in')
                return redirect('login')
        else:
            form = UserCreationForm() #creates an empty form
        return render(request, 'store/register.html', {'form': form})

相关问题 更多 >