Wie kann ich eine generische klassenbasierte Erstellungsansicht für ein Modell erstellen?

7

Was ich versuche, ist Django Boilerplate für funktionale Ansichten. Jede Hilfe hier wird sehr geschätzt, da die Dokumente Beispiele für die Vorlagenansicht und Listenansicht zeigen, aber ich habe sehr wenig für die modellbasierten generischen Ansichten gefunden. Fehle ich ein Beispiel in den Dokumenten?

Ich habe ein Modell, das einen Eintrag in einem Kalender darstellt. Es gibt einen Fremdschlüssel für ein anderes Objekt (nicht für einen Benutzer), dem der Eintrag gehört. Ich möchte einfach den Eintrag erstellen, sicherstellen, dass der Fremdschlüssel des Eintrags richtig gesetzt ist, und den Benutzer dann zur entsprechenden Kalenderseite zurückkehren.

Ich weiß jedoch nicht, wie klassenbasierte generische Views ihre URL-Argumente erhalten, und mir ist nicht klar, wie man die success_url so setzt, dass sie die ID wieder verwendet, die ursprünglich an die Erstellungs-URL übergeben wurde. Nochmals vielen Dank im Voraus für Ihre Hilfe.

Was ich im Wesentlichen frage, ist, was ist die klassenbasierte generische Ansicht, die der folgenden entspricht:

%Vor%     
Lockjaw 09.04.2011, 19:10
quelle

2 Antworten

22

Sie könnten die generische Ansicht edit.CreateView ableiten, die Klasse / den Kurs in der Methode dispatch() festlegen und diese durch Überschreiben der Methode form_valid() speichern:

%Vor%

Wenn Sie die CourseEntryForm ModelForm nicht anpassen, können Sie die Eigenschaft form_class auslassen.

Leider ist es nicht möglich, super() in der form_valid() -Methode aufzurufen - aufgrund der Art, wie es geschrieben wurde, würde das Objekt wieder gespeichert werden.

Wenn Sie die Klasse (Kurs?) im Vorlagenkontext benötigen, können Sie dies in der get_context_data() -Methode hinzufügen:

%Vor%     
Matt Austin 08.05.2011, 09:03
quelle
6

Eine Alternative zu Matt Austins Antwort könnte sein, die Methode get_form zu überschreiben:

%Vor%

Auf diese Weise befindet sich .course in der Instanz CourseEntry im Kontext und in der Instanz, die beim Speichern des Formulars beim POST erstellt wird.

    
meshy 14.05.2012 09:24
quelle

Tags und Links