これが編集を書く最もクリーンな方法であるかどうかはわかりません。しかし、何時間もの研究の後、これは私が思いつくことができる最高のものです。ただし、実際にモデルを更新するためにPOSTとして再度取得するために、非表示フィールド内にIDを格納する必要があるという事実は好きではありません。
これを行うためのより効率的な方法はありますか?
def edit_contact_view(request):
profile = request.user.get_profile()
if 'id' in request.GET:
try:
id = request.GET['id']
contacts = profile.company.contact_set.all()
form = ContactsForm(profile.company, instance=contacts.get(id=id))
form.data['id'] = id
variables = RequestContext(request, {'form':form })
return render_to_response("contact.html", variables)
except Contact.DoesNotExist:
raise Http404(_(u'Contact not found'))
else:
if request.method == 'POST':
form = ContactsForm(profile.company, request.POST)
if form.is_valid():
contacts = profile.company.contact_set.all()
contact = contacts.get(id=form.cleaned_data['id'])
contact.last_name = form.cleaned_data['last_name']
contact.save()
return HttpResponseRedirect('/')