2016-04-22 12 views
0

Mein Modell hat einen erforderlichen Fremdschlüssel für das Benutzermodell. Auf der Formularübermittlung möchte ich den angemeldeten Benutzer als Übergeber speichern.django Benutzerobjekt als Feldwert im Formular festlegen submit

Aus meiner Sicht:

def myview(request): 
    if request.method == 'POST': 
    form = MyForm(request.POST) 
    myuser = User.objects.get(id=request.user.id) 
    form.submitter_field = myuser 
    if form.is_valid() 
     #this prints a failed message saying submitter_field is required 

Antwort

0

Etwas Ähnliches kann für Sie arbeiten. Sie können die Benutzer-ID aus der Anforderungssitzung abrufen, ohne die Benutzerabfrage auszuführen.

if form.is_valid(): 
    f = form.save(commit=false) 
    f.submitter_field = request.user 
    f.save() 
+0

Das Übergabefeld ist erforderlich, daher kann ich 'is_valid()' nicht aufrufen, bevor ich das Feld einstelle. Doing 'form.save (commit = False)' vor 'is_valid()' throws und error: 'konnte nicht erstellt werden, da die Daten nicht validiert wurden. ' – smilebomb

+0

Wenn das übergebende Feld von Ihrem Formular benötigt wird, entfernen Sie es einfach aus dem Formular oder legen Sie das übergebende Feld erforderlich = False fest. Sie können den Anfangswert auch in Ihrem Formular für das Übergabefeld festlegen, indem Sie 'form = MyForm (request.POST oder None, initial = {'submitter': request.user})' 'ausführen – WayBehind

Verwandte Themen