Wie lege ich Anfangsdaten für eine Django-Klassen-basierte generische createview mit Anfragedaten fest

7

Ich habe Djangos generisches createview für mein Modell verwendet

%Vor%

Dies funktioniert perfekt, um eine Erstellungsansicht von Person mit meinem benutzerdefinierten Formular anzuzeigen. Allerdings habe ich ein Feld in der Form, die ich mit einem Wert vorbelegen möchte. Ich habe diese Antwort gefunden: Setzen Sie den Anfangswert auf die Modellform in der Klasse basierte generische Ansichten

Mein vorab ausgefüllter Wert stammt jedoch aus dem Profil für request.user. Wie kann ich auf die Anfrage in PersonCreateView zugreifen und diese an das Formular übergeben?

    
rsp 01.11.2012, 15:17
quelle

2 Antworten

30

In jeder der Klassenmethoden können Sie auf die Anfrage mit self.request zugreifen. Ihr Benutzerprofil ist somit mit self.request.user erreichbar.

Wenn Sie auf dem von Ihnen bereitgestellten Link aufbauen, können Sie in der Methode get_initial self.request.user verwenden, um den Wert festzulegen.

ie.

%Vor%     
jondykeman 01.11.2012, 15:22
quelle
3

Zunächst müssen Sie kein Mixin verwenden. Geben Sie einfach form_class in PersonCreateView ; Das Modell wird auch nicht benötigt, da Sie es bereits in form_class angeben (vorausgesetzt, es handelt sich um eine Unterklasse von ModelForm ).

Über die Position, von der aus die Anfrage abgerufen werden soll, speichern klassenbasierte Ansichten das Objekt. Sie können also self.request.user in get_initial oder get_form_kwargs .

ausführen     
Facundo Olano 01.11.2012 15:28
quelle