46

ModelForm を保存した後に主キーを取得するにはどうすればよいですか? フォームが検証されて保存された後、連絡先の主キーを必要とする contact_details ビューにユーザーをリダイレクトしたいと思います。

def contact_create(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse(contact_details, args=(form.pk,)))
    else:
        form = ContactForm()
4

2 に答える 2

62

ModelFormsaveメソッドは、保存されたオブジェクトを返します。

これを試して:

def contact_create(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            new_contact = form.save()
            return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
    else:
        form = ContactForm()
于 2009-04-09T05:50:11.463 に答える
13

データを変更するために form.save(commit=False) を設定し、多対多の関係がある場合、答えは少し異なります。

def contact_create(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            new_contact = form.save(commit=False)
            new_contact.data1 = "gets modified"
            new_contact.save()
            form.save_m2m()
            return HttpResponseRedirect(reverse(contact_details, args=(new_contact.pk,)))
    else:
        form = ContactFrom()

https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#the-save-method

于 2011-06-06T04:58:11.470 に答える