webentwicklung-frage-antwort-db.com.de

django createview wie man das erzeugte Objekt erhält

ich habe zwei verkettete Form. Grundsätzlich füllt der Benutzer das erste Formular aus und wird dann zum zweiten Formular umgeleitet, das den Daten des ersten Formulars einen Mehrwert verleiht. E.G. Ich habe einen Formfilm (erstes Formular) und dann werde ich zu dem Formular (Schauspieler) umgeleitet, der den Schauspieler zum Film hinzufügt.

in meinem Fall der Film = Chiamata und Actor = Offerta (ich behalte den Namen der Italiener für das, was ich brauche: D)

fein.

das sind meine urls in der urls.py 

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

ich habe diese Ansicht erstellen

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

jetzt ist das Problem, wie ich den PK des Objekts erhalten kann, das von chiamataForm erstellt wurde. Ich brauche das, um es der URL von offerta_create hinzuzufügen.

31
EsseTi

vielleicht könnten Sie die get_success_url()-Methode verwenden ( siehe Referenz )

In diesem Fall wäre es ungefähr so:

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

Die akzeptierte Antwort finden Sie unter Warum hat self.object in CreateView nach dem Speichern in der Datenbank keine ID? - Nachdem ich die "id" -Felder aus meinen Modellen entfernt habe und Django die Einstellung "AutoField" für jedes Modell vorgegeben habe, wie in dieser Antwort empfohlen, funktionierte self.object.id in meinem CreateView einwandfrei.

0
Chirael