Python 如何在django中将用户模型映射到客户模型
我当时正在使用Django开发一个电子商务网站,我在Python 如何在django中将用户模型映射到客户模型,python,python-3.x,django,django-models,Python,Python 3.x,Django,Django Models,我当时正在使用Django开发一个电子商务网站,我在models.py class Customer(models.Model): user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE) name = models.CharField(max_length=200, null=True) email = models.CharField(max_length=20
models.py
class Customer(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200)
def __str__(self):
return self.name
当我使用此视图在我的站点上注册新用户时:
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
login(request, user)
return redirect('store')
else:
form = SignUpForm()
return render(request, 'store/signup.html', {'form': form})
用户已创建,但我收到错误relatedObjectsDoesNotExist:用户没有客户
我知道这是因为用户模型是创建的,而不是客户,我是Django的新手,我想知道在注册时映射这两个模型的方法。在views.py中注册用户时,您还可以根据需要创建客户模型。如果是这样,请尝试以下方法:
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
Customer.objects.create(user=user,name=username,email=email) // get the email from the form
login(request, user)
return redirect('store')
else:
form = SignUpForm()
return render(request, 'store/signup.html', {'form': form})
还可以添加您的customer modalın管理面板并手动添加您的客户信息以供演示。在views.py中注册用户时,您还可以根据需要创建客户modalı。如果是这样,请尝试以下方法:
def signup(request):
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
user = authenticate(username=username, password=raw_password)
Customer.objects.create(user=user,name=username,email=email) // get the email from the form
login(request, user)
return redirect('store')
else:
form = SignUpForm()
return render(request, 'store/signup.html', {'form': form})
还可以添加您的客户modalın管理面板,并手动添加您的客户信息以供演示。您从何处获得此错误?你能把代码粘贴到发生错误的地方吗?你从哪里得到这个错误的?你能把代码贴在发生的地方吗?非常感谢,它成功了。只需添加
email=form.cleaned\u data.get('email')
和Customer.objects.create(user=user,name=username,email=email)
就像你提到的很多hanks一样,它很有效。只需添加email=form.cleaned\u data.get('email')
和Customer.objects.create(user=user,name=username,email=email)
,如您所述