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?
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% 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
.
Tags und Links django django-forms django-class-based-views django-generic-views