with valid template manually formmodel form fields creating create python django django-models django-forms

python - valid - form fields django template



Obtenga la clave principal después de guardar un ModelForm en Django (2)

El método save ModelForm devuelve el objeto guardado.

Prueba esto:

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

¿Cómo obtengo la clave principal después de guardar un ModelForm? Después de que el formulario ha sido validado y guardado, me gustaría redirigir al usuario a la vista contact_details que requiere la clave principal del contacto.

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


En el caso donde ha configurado form.save (commit = False) porque quiere modificar los datos y tiene una relación de muchos a muchos, la respuesta es un poco diferente:

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