Django Formular Vorschau - Hinzufügen der Benutzer das Formular vor dem speichern
class RegistrationFormPreview(FormPreview):
preview_template = 'workshops/workshop_register_preview.html'
form_template = 'workshops/workshop_register_form.html'
def done(self, request, cleaned_data):
# Do something with the cleaned_data, then redirect
# to a "success" page.
# data = request.POST.copy()
# data['user_id'] = u'%s' % (request.user.id)
# cleaned_data['user'] = u'%s' % (request.user.id)
#f = self.form(cleaned_data)
#f = self.form(data)
#f.user = request.user
f = self.form(request.POST)
f.save()
pdb.set_trace()
return HttpResponseRedirect('/register/success')
Wie Sie sehen können, habe ich versucht, ein paar Möglichkeiten, und wurden auskommentiert. Die Aufgabe ist scheinbar einfach: Fügen Sie den Benutzer von der Anfrage, das Formular vor dem speichern, und speichern Sie dann.
Was ist der angenommen, der Arbeitsweise hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der Benutzer kann nicht geändert werden, ich würde sagen, es sollte nicht einmal in das Formular aufgenommen in den ersten Platz.
Entweder Weg, verwenden Sie die
commit
- argument um zu verhindern, dass das resultierende Objekt wird sofort gespeichert, sollte funktionieren (vorausgesetztFormPreview
verwendetModelForm
):obj.save()
? Möglicherweise ist dies nicht der Fall, die meisten der Zeit, mit einer einfachenrequest.user
Fall, aber was ist mit komplizierteren Fällen. Wie gehst du mit der Validierung und rendering-Fehler nachsave(commit=False)