2009-04-09 21 views
32

Bir model biçimini kaydettikten sonra birincil anahtarı nasıl alabilirim? Form doğrulandıktan ve kaydedildikten sonra, kullanıcıyı ilgili kişinin birincil anahtarını gerektiren contact_details görünümüne yönlendirmek istiyorum. ModelForm sitesindeki save yöntemDjango'da Model Biçimlendirildikten Sonra Birincil Anahtar Al

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() 
+0

Tam sormak istediğim şey, teşekkürler! +1 – CodyBugstein

cevap

47

kayıtlı nesnesini geri gönderir.

bu deneyin:

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() 
+0

Çok teşekkür ederim! – Matt

+0

Sorun değil, kolayca gözden kaçıyor ve anında sezgisel değil. ;) – monkut

+0

'Geri 'işlevi nedir? – CodyBugstein

9

Eğer form.save belirledik Eğer verileri değiştirmek istediğim için (= False taahhüt) ve bir çoğu çoğa ilişkisi var, o zaman cevap farklı biraz:

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

İlgili konular