在用户注册之前保存django模型表单数据

时间:2012-03-01 10:02:04

标签: django django-models django-forms django-users

我正在使用django模型表单,即使没有注册的用户也可以填写表单,但提交需要用户注册。 这是我的模特:

class Study(model.Model):
    marksobtained = models.CharField(max_length=5)
    highestmarks = models.CharField(max_length=5)
    teacher = models.CharField(max_length=300)

class StudyForm():
   some customisation stuff. 

然后是views.py

form = StudiesForm(request.POST or None,
                       instance=id and Studies.objects.get(id=id))
if form.is_valid():
      form.save()
      return render(request, 'calculate.html', {'detail': ret_dict, 'amt': amt})
      else:
          return render(request, 'forms.html', {'form':form})
    else:
          return render(request, 'forms.html', {'form':form})

不要为视图中的缩进和其他内容烦恼,这只是我想要做的模型,可以看出任何匿名用户现在可以提交表单,我希望它进一步修改,如当匿名用户提交表单时,首先应该注册,然后将他的数据添加到模型中。

如何实施?

2 个答案:

答案 0 :(得分:1)

如果用户未经过身份验证,则将表单数据保存到会话中。

然后在系统中记录用户。

然后将表单数据从会话中拉出并保存获取经过身份验证的用户信息的信息。

答案 1 :(得分:0)

  1. 不要求用户FK。保存模型。
  2. 如果request.user.is_authenticated()给他一个带有已创建模型ID的cookie。在登录页面上重定向他。
  3. 对于每个用户,检查是否存在具有型号ID的cookie,将用户附加到型号,保存。