如何限制Django用户在不同的会话中两次填写表单

2wnc66cl  于 2023-03-04  发布在  Go
关注(0)|答案(1)|浏览(120)

我有一个供员工填写个人资料的表单,我希望限制员工多次查看该表单。
也就是说,在填写表单之后,您无法再查看空表单,您只能通过更新链接来更新表单。
我使用Django is_authenticated函数作为用户注册和登录页面,我正在寻找一种方法来为我当前的问题做一些类似的事情。

mum43rcc

mum43rcc1#

既然你想在会话间持久化表单提交,你可以把这些信息持久化在数据库中,或者也可以考虑把这些信息存储在redis中,这里我假设你将使用数据库。
您可以在现有的Employee模型中跟踪这些信息,或者如果您知道可能需要将其扩展到其他表单,则可以创建一个单独的模型。
在这里,我使用一个单独的模型来跟踪这些信息(如果存在一行,则表明表单已经填写)

class EmployeeFormSubmission(models.Model):
    employee = models.OneToOneField(User, on_delete=models.CASCADE)

如果您想跟踪多个表单,可以添加其他字段,如form_name
最后,您可以检查current_employee是否已经提交了这样的表单,并根据您的业务逻辑(我已经在代码注解中指出了这一点)处理您真正想要做的事情

if EmployeeFormSubmission.objects.filter(employee=request.user).exists():
   # You can display an error here, or redirect in the view for 
   # editing the information.
else:
   # This is a new form for the user, so they can fill this in.
   form = EmployeeForm()

 # return the form/error from the view.

相关问题