【发布时间】:2020-12-14 08:48:08
【问题描述】:
我构建了一个模型表单,我希望用户首先登录,然后填写我的表单字段。对于以前没有提交过的新用户,我希望表单为空白。对于之前提交过表单的客户,我想获取发出 GET 请求的 登录客户 的 ID,并从数据库中检索字段值以填充表单,其中他之前输入的数据以提交表单。
目前我正在尝试这种方法来获取登录用户的 ID 以填充 views.py 中的字段
cur_customer = Customer.objects.get(id=request.user.id)
然而,这给了我一个错误,提示 客户匹配查询不存在。
那么我该如何实现呢?
views.py
def multi_form(request):
form=RegForm()
if request.method=='POST':
form=RegForm(request.POST, request.FILES)
if form.is_valid():
form.save()
messages.success(request, "Your Response has been recorded")
context={'form':form}
return render(request, 'customer/index.html', context)
else :
return render(request, 'customer/index.html', {'form': form})
else:
cur_customer = Customer.objects.get(id=request.user.id)
form=RegForm(initial={
'first_name':cur_customer.get('first_name',''),
'last_name':cur_customer.get('last_name','')})
context = {'form': form}
return render(request, 'customer/index.html', context)
models.py
class Customer(models.Model):
id=models.AutoField(primary_key=True, default=None)
customerReg=models.OneToOneField(CustomerReg, on_delete=models.SET_NULL, null=True, blank=True)
first_name=models.CharField(max_length=200, blank=False, default=None)
last_name=models.CharField(max_length=200, blank=False, default=None)
class CustomerReg(models.Model):
user=models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
name=models.CharField(max_length=200, null=True)
email=models.EmailField(max_length=254)
【问题讨论】:
标签: django django-models django-forms django-views