Pregunta de Django para novatos: volverse loco con un formulario para crear y actualizar

StackOverflow https://stackoverflow.com/questions/611575

  •  03-07-2019
  •  | 
  •  

Pregunta

OK. Simplemente me até un nudo tratando de hacer un formulario en Django que puedo usar para ingresar datos sobre un nuevo registro o actualizar uno existente.

¿Alguien puede esbozar las cosas correctas que debería tener en mis formularios, vistas y URL si tengo este modelo? :

class Person(models.Model) :
  name = models.CharField()
  age = models.IntegerField()

En otra página quiero un enlace a un formulario que me permita crear una nueva instancia de una persona O editar una existente.

Cosas que me confunden:

  • ¿necesito dos líneas distintas en urls.py, una para vincular al formulario en blanco, NO pasar una identificación y otra para vincular al formulario cuando paso la identificación?

  • ¿Necesito dos vistas diferentes, una para recibir el formulario antes de que se guarde una instancia y otra cuando la instancia existe?

Estoy seguro de que he visto esto hecho con un enlace y una función en views.py, pero parece que ya no puedo hacerlo bien. Lo que no parece funcionar es intentar enviar tanto la URL con la identificación

  /edit/id

y sin

  /edit/ 

a la misma función de vista con un argumento predeterminado para id

 def edit(request,id=0) :
    blah

Entonces, ¿cuál es la forma correcta de hacer esto?

Saludos. phil

¿Fue útil?

Solución

Configure su urls.py para capturar la variable de identificación si está incluida en la url, luego verifique si hay null en su views.py

Su urls.py podría verse así:

(r'^edit/(?P<person_id>\w+)/

Luego, en su views.py:

def edit_person(person_id=None):
    if(person_id): #show populated form
    else: # show empty form
, 'mysite.myapp.views.edit_person'),

Luego, en su views.py:

<*>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top