Fügen Sie vor dem Speichern Daten zum ModelForm-Objekt hinzu
Sagen, ich habe ein Formular, das wie folgt aussieht:
forms.py
class CreateASomethingForm(ModelForm):
class Meta:
model = Something
fields = ['field2', 'field3', 'field4']
Möchte ich die form auf diese drei Felder. Aber mein Something
- Klasse hat auch field1
. Meine Frage ist - wie kann ich Daten hinzufügen field1
wenn ich mich nicht mit der ModelForm
Daten zu sammeln. Ich habe versucht, etwas wie das zu tun, aber es funktioniert nicht und ich bin nicht sicher, auf dem richtigen Weg, um dieses Problem 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
Die Fehler ich erhalte, ist:
TypeError: 'CreateAClassForm' object does not support item assignment
In Django, was ist der richtige Weg, zuweisen von Daten zu einer ModelForm
Objekt vor dem speichern?
InformationsquelleAutor der Frage Joker | 2013-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort Daniel Roseman
Manchmal, das Feld, die erforderlich sein könnten, das heißt, Sie können nicht machen es vorbei an form.is_valid(). In diesem Fall können Sie ein dict-Objekt enthält alle Felder der form.
InformationsquelleAutor der Antwort eosimosu
Hier ist ein geeigneter Weg, um das hinzufügen von Daten, insbesondere während der Tests verwendet:
Zuerst konvertieren Sie einen vorhandenen Eintrag in einem Wörterbuch mit der
model_to_dict
FunktionDann fügen Sie die neuen Daten in das Wörterbuch
Dieser besser funktioniert als der Wert in der form
Erstellen Sie das Formular mit gültigen Daten und die Instanz
Tun, irgendwelche Behauptungen, die Sie benötigen:
InformationsquelleAutor der Antwort surfer190