sagen, ich habe ein Formular, das wie folgt aussieht:Daten Modelform Objekt hinzufügen vor dem Speichern
forms.py
class CreateASomethingForm(ModelForm):
class Meta:
model = Something
fields = ['field2', 'field3', 'field4']
Ich mag die Form diese drei Felder hat. Jedoch hat meine Something
Klasse auch field1
. Meine Frage ist - wie füge ich Daten zu field1
hinzu, wenn ich die ModelForm
nicht verwende, um die Daten zu sammeln. Ich habe versucht, so etwas wie dies zu tun, aber es funktioniert nicht, und ich bin auf dem richtigen Weg, nicht sicher, dies zu lösen:
views.py
def create_something_view(request):
if (request.method == 'POST'):
# Create an object of the form based on POST data
obj = CreateASomething(request.POST)
# ** Add data into the blank field1 ** (Throwing an error)
obj['field1'] = request.user
# ... validate, save, then redirect
Der Fehler, den ich erhalten ist:
TypeError: 'CreateAClassForm' object does not support item assignment
In Django, was ist die richtige Methode, um Daten zu einem ModelForm
Objekt vor dem Speichern zuzuordnen?
Danke - einen dummen Fehler auf Mein Ende verwendet einen Listenzugriffsaufruf, um das Attribut eines Objekts zu erhalten. – Joker
Für klassenbasierte Ansichten können Sie auch [form_valid-Methode überschreiben] (https://docs.djangoproject.com/en/1.5/topics/class-based-views/generic-editing/#basic-forms) hinzufügen Art von Informationen, dann rufen Sie 'super (MyView, self) .form_valid (form)' ', um den gleichen Effekt zu erzielen. –
Gibt es eine Möglichkeit, die Speichermethode des Formulars zu überschreiben, um dasselbe zu erreichen? – jvannistelrooy