我有一个简单的表格,可以添加一个家庭的个人信息。有时它只通过一次提交就可以保存一个人的两个实例。也许我的鼠标有问题,双击而不是一次点击(它有一些问题)。我认为这是不可能的,并且django只接受来自表单实例的一个帖子请求而不是更多(可能接受)。如果代码有问题怎么办?如果它是我的代码的问题,为什么它会发生一次?
house = get_object_or_404(House, id=code)
if request.method == 'POST':
form = ParentForm(request.POST)
if form.is_valid():
# save it if it's valid
parent = form.save(commit=False)
if parent.living == 0:
parent.in_family = 0
if not parent.guardian:
parent.save()
if parent.guardian and parent.in_family:
parent.save()
我使用Django 1.8
编辑以清除:这不是唯一一次保存两次的视图。也许这是django中的一个错误
答案 0 :(得分:0)
要解决此问题,首先需要在相应的数据库表上创建唯一约束。真正的解决方案基于数据库架构。我不知道您在parent
表格中有哪些字段(列),您可以从为这两个字段添加唯一约束开始:child_id
和parent_name
。
另一个问题是您需要阻止第二次点击。所以基本上你需要编写一些JavaScript代码:它会监听提交按钮的onClick
事件。单击按钮后,侦听器会将disabled
属性设置为该按钮,以防止进一步点击。