Domanda per principianti Django: impazzire con un modulo per la creazione e l'aggiornamento

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

  •  03-07-2019
  •  | 
  •  

Domanda

OK. Mi sono appena legato in un nodo cercando di creare un modulo in Django che posso usare per inserire dati su un nuovo record o aggiornarne uno esistente.

Qualcuno può delineare le cose giuste che dovrei avere nelle mie forme, viste e URL se questo modello? :

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

In un'altra pagina desidero un collegamento a un modulo che mi consenta di creare una nuova istanza di una persona o di modificarne una esistente.

Cose che mi confondono:

  • sono necessarie due linee distinte su urls.py, una per collegarsi al modulo vuoto, NON passare un id e una per collegarsi al modulo quando passo l'id?

  • sono necessarie due diverse visualizzazioni, una per ricevere il modulo prima che un'istanza sia stata salvata e una quando esiste l'istanza?

Sono sicuro di averlo visto fatto con un link e una funzione in views.py, ma non riesco più a farlo bene. Ciò che non sembra funzionare sta provando a inviare sia l'URL con l'id

  /edit/id

e senza

  /edit/ 

alla stessa funzione di visualizzazione con un argomento predefinito per id

 def edit(request,id=0) :
    blah

Quindi qual è il modo giusto per farlo?

Saluti. phil

È stato utile?

Soluzione

Configura urls.py per acquisire la variabile id se inclusa nell'URL, quindi verifica la presenza di null in views.py

Il tuo urls.py potrebbe assomigliare a questo:

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

Quindi, nel tuo views.py:

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

Quindi, nel tuo views.py:

<*>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top