我想用ModelForm構建一個簡單的CUD(創建/更新/刪除)視圖,但在保存時出現重複記錄:獲取ModelForm爲id插入隱藏字段(防止保存重複實例)
的ModelForm:
class formFacetAnswer(forms.ModelForm):
class Meta:
model = models.FacetAnswer
exclude = ('who')
查看:
def xxx_test1(request):
if request.method == 'POST':
form = formFacetAnswer(request.POST)
if form.is_valid():
answer = form.save(commit=False)
answer.who = request.user
answer.save()
return HttpResponseRedirect('/')
else:
a_id = request.GET.get('answer')
if a_id:
a_id=int(a_id)
answer = models.FacetAnswer.objects.get(id=a_id)
form = formFacetAnswer(instance=answer)
else:
form = formFacetAnswer()
return render_to_response('facet_answer.html', dict(form=form), context_instance=RequestContext(request))
模板:
{% extends 'head-plain.html' %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
{% endblock %}
formFacetAnswer(instance=answer)
不會插入帶有答案ID的隱藏字段,因此在保存時會創建一個新的答案。在Django 1.3下使用這種需求的最佳模式是什麼?