że mam formularz, który wygląda tak:dodać dane do obiektu ModelForm przed zapisaniem
forms.py
class CreateASomethingForm(ModelForm):
class Meta:
model = Something
fields = ['field2', 'field3', 'field4']
chcę mieć postać tych trzech pól. Jednak moja klasa Something
ma także field1
. Moje pytanie brzmi - jak dodać dane do field1
, jeśli nie używam ModelForm
do zbierania danych. Próbowałem zrobić coś takiego, ale to nie działa i jestem pewien na właściwym sposobem rozwiązania to:
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
Błąd zgłaszany jest:
TypeError: 'CreateAClassForm' object does not support item assignment
Jaki jest prawidłowy sposób przypisania danych do obiektu przed zapisaniem?
Thank You - głupi błąd na mój koniec przy użyciu wywołania dostępu do listy, aby uzyskać atrybut obiektu. – Joker
Aby uzyskać widoki klasowe, możesz również [zastąpić metodę form_valid] (https://docs.djangoproject.com/en/1.5/topics/class-based-views/generic-editing/#basic-forms), aby dodać rodzaj informacji, następnie wywołaj 'super (MyView, self) .form_valid (form)', aby osiągnąć ten sam efekt. –
Czy istnieje sposób nadpisania metody zapisywania formularza w celu osiągnięcia tego samego? – jvannistelrooy