保存时复制数据库中的数据(Django 形式)
Duplicating data in db while saving (Django form)
我创建了一个表单,当进入页面时从 json 文件加载初始数据,然后我可以在同一表单中编辑和保存数据。所有工作都很完美,但每次我按下提交按钮时,数据库都会接受两行相同的数据。任何帮助表示赞赏。
views.py
def form_save_and_edit(request, id=None, template_name='create.html'):
""" referring data from "model_from_json()",
making data visible within another function """
func = model_from_json()
""" savind and editing form data in the same form """
form = UserDataForm(request.POST)
if request.POST:
updated_field = form.save()
last_name = request.session['last_name'] = updated_field.last_name
first_name = request.session['first_name'] = updated_field.first_name
email = request.session['email'] = updated_field.email
skype = request.session['skype'] = updated_field.skype
form = UserDataForm({
'last_name': last_name,
'first_name': first_name,
'skype':skype,
'email':email
})
redirect_url = reverse('create')
message = messages.success(request, "You successfully updated your profile!")
if form.is_valid():
form.save()
else:
form = UserDataForm({
'last_name': func['last_name'],
'first_name':func['first_name'],
'email':func['email'],
'skype':func['skype'],
})
message = messages.success(request, "You just loaded your profile initial data")
return render_to_response('create.html', {'form': form,}, context_instance=RequestContext(request))
您似乎调用了两次 form.save()
语句。一旦在方法的开头,这里:
updated_field = form.save()
最后还有一个:
if form.is_valid():
form.save()
我创建了一个表单,当进入页面时从 json 文件加载初始数据,然后我可以在同一表单中编辑和保存数据。所有工作都很完美,但每次我按下提交按钮时,数据库都会接受两行相同的数据。任何帮助表示赞赏。
views.py
def form_save_and_edit(request, id=None, template_name='create.html'):
""" referring data from "model_from_json()",
making data visible within another function """
func = model_from_json()
""" savind and editing form data in the same form """
form = UserDataForm(request.POST)
if request.POST:
updated_field = form.save()
last_name = request.session['last_name'] = updated_field.last_name
first_name = request.session['first_name'] = updated_field.first_name
email = request.session['email'] = updated_field.email
skype = request.session['skype'] = updated_field.skype
form = UserDataForm({
'last_name': last_name,
'first_name': first_name,
'skype':skype,
'email':email
})
redirect_url = reverse('create')
message = messages.success(request, "You successfully updated your profile!")
if form.is_valid():
form.save()
else:
form = UserDataForm({
'last_name': func['last_name'],
'first_name':func['first_name'],
'email':func['email'],
'skype':func['skype'],
})
message = messages.success(request, "You just loaded your profile initial data")
return render_to_response('create.html', {'form': form,}, context_instance=RequestContext(request))
您似乎调用了两次 form.save()
语句。一旦在方法的开头,这里:
updated_field = form.save()
最后还有一个:
if form.is_valid():
form.save()