ModelFormでシンプルなCUD(Create/Update/Delete)ビューを作成しようとしていますが、モデルフォームに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とともに隠しフィールドを挿入しないので、保存時に新しいIDが作成されます。 Django 1.3の下で、このニーズに最も適したパターンは何ですか?