2012-11-09 14 views
28

Ho due moduli concatenati. In pratica l'utente riempie il primo modulo e poi viene reindirizzato al secondo che aggiunge valore ai dati del primo modulo. E.G. Ho una forma Movie (prima forma) e poi sono reindirizzato alla forma (attore) che aggiunge l'attore al film.django createview come ottenere l'oggetto che viene creato

nel mio caso il film = Chiamata e Attore = Offerta (io continuo il nome italiani per quello che ho bisogno: D)

bene.

quelli sono i miei URL nella urls.py

url(r'^chiamata/$', ChiamataCreate.as_view(),name='chiamata_create'), 
url(r'^chimamata/(?P<pk>\d+)/offerta$', OffertaCreate.as_view(), name='offerta_create'), 

ho questa visione creare

class ChiamataCreate(CreateView): 
    template_name = 'chiamata_form.html' 
    form_class = ChiamataForm 
    success_url=reverse_lazy('offerta_create',args=(??,)) 

Ora il problema è come posso ottenere il PK dell'oggetto creato dal chiamataForm . Ho bisogno di questo per aggiungerlo all'URL di offerta_create.

risposta

33

forse si potrebbe utilizzare il metodo get_success_url() (see reference)

In questo caso, sarebbe qualcosa di simile:

def get_success_url(self): 
    return reverse('offerta_create',args=(self.object.id,)) 
+6

Yup funziona 'def get_success_url (self): ritorno inverso ('offerta_create', args = (self.object.id,))' – EsseTi

+0

@EsseTi Quando provo ad usare 'self.object.id' la strada che hai fatto, ottengo 'None' indietro, anche se' self.object' esiste definitivamente e viene salvato nel mio database (MySQL). Qualche idea sul perché sarebbe? –

+1

non proprio. potrebbe essere che non è (ancora) salvato, quindi non esiste un ID. cosa succede se cerchi di accedere ad un altro campo? – EsseTi

Problemi correlati