python - 在 Django 网上商店中创建客户
问题描述
我正在开发一个 Django 网上商店,并希望像标题一样创建一个客户。我用 HTML 制作了一个登录表单,并用 JSON 回复服务器。在数据库中创建一个新用户工作正常。然后是客户部分,因为如果我不为每个用户分配一个客户,我会收到一个错误:“用户没有客户”。所以我尝试使用此功能在数据库中创建一个新客户并将其分配给新创建的用户。
c = Customer(user="Lukas", name="Lukas", email="lukas@lukasalstrup.dk", about="Account has just been created") # Create a new customer and assign the newly created user
c.save() # Save the customer in the system
当我这样做时,我得到一个错误:
Cannot assign "'Lukas'": "Customer.user" must be a "User" instance.
虽然我在系统中有一个名为 Lukas 的用户。这当然会在以后更改,但我只是想让它工作,然后再放入变量。
我的 models.py 客户类
class Customer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank = True)
name = models.CharField(max_length=200, null=True)
email = models.EmailField(max_length=200, null=True)
about = models.CharField(max_length=100, null=True)
def __str__(self):
return self.name
views.py 注册页面:
def registerPage(request):
if request.user.is_authenticated:
return redirect('/')
else:
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
user = form.cleaned_data.get('username')
messages.success(request, 'Account was created for ' + user)
c = Customer(user="Lukas", name="Lukas", email="lukas@lukasalstrup.dk", about="Account has just been created") # Create a new customer and assign the newly created user
c.save() # Save the customer in the system
return redirect('login')
context = {'form':form}
return render(request, 'store/register.html', context)
我尝试了几种方法,例如将用户更改为 request.user anf {{request.user}}。这些都不起作用。我无法从 Django 中找到任何涵盖该内容的文档。
提前致谢
解决方案
user
应该是一个对象,User
例如登录用户:
def registerPage(request):
if request.user.is_authenticated:
return redirect('/')
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
user = form.save()
messages.success(request, 'Account was created for ' + user)
Customer.objects.create(
user=user,
name='Lukas',
email='lukas@lukasalstrup.dk',
about='Account has just been created'
)
return redirect('login')
context = {'form':form}
return render(request, 'store/register.html', context)
推荐阅读
- amazon-web-services - ec2_ami_copy - 未处理的异常 - 错误(104,'连接被对等方重置')
- c# - 访问 For Loop ASP.Net MVC 5 之外的所有记录
- python - 检查文本文件中的单词
- javascript - Howler 音频搜索总是返回 0
- c# - EF Core“无法为标识列插入显式值”,尽管 IDENTIY_INSERT 设置为 ON
- macos - macOS 上的“打开方式”如何在内部填充?
- powershell - 转义大括号似乎在 SendKeys 中不起作用
- protractor - 我们可以在每次运行自动化脚本时输入不同的日期输入吗
- ruby-on-rails - 从 link_to 创建一条新记录会导致 urlgenerationerror
- wpf - WPF、XAML、FindAncestor 绑定 DataTemplate/ControlTemplate 层次结构