2016-08-02 12 views
0

私はReservationオブジェクトを作成するフォームを持っています。このオブジェクトには、customer = models.ForeignKey(User)があります。これは必須の属性です。現在のユーザーをModelFormの属性に設定するにはどうすればよいですか?

ReservationCreationForm().save()を使用してオブジェクトを作成するにはどうすればよいですか?

私はメソッドを上書き保存しようとした

def save(self,user,*args,**kwargs): 
    self.customer = user 
    super(ReservationCreationForm).save() 

ので、私はrequest.user属性を持つフォームを作成することもできますが、それが動作しませ - 例外値:

'super' object has no attribute 'save' 

あなたは何をしますか?

EDIT

はトドルの回答によると、私がsave()自身で問題を解決し

def save(self,user,*args,**kwargs): 
    self.customer = user 
    super(ReservationCreationForm, self).save(*args, **kwargs) 

に保存変更しましたが、それはまだそれをReservationuserを追加しません。発生する例外値:

va_app_reservation.customer_id may not be NULL 

答えて

1

.saveメソッドを正しく実行します。 superは、オブジェクトインスタンスである2番目の引数を受け入れます。

super(ReservationCreationForm, self).save(*args, **kwargs) 

UPDATE

あなたはreservation instancecustomerを設定されていませんが、あなたのreservationオブジェクトがcustomerを持っていない理由form instanceに、それはです。

、この1としてみてください(とreturnを忘れないでください):

def save(self, user, *args,**kwargs): 
    self.instance.customer = user 
    return super(ReservationCreationForm, self).save(*args, **kwargs) 
+0

おかげでそれはまだ予約にユーザーを追加しませんが···顧客がモデルで定義されている、私はしませんでしたsave()メソッドを除くModelFormのどこにでも定義できます。 –

+0

@MilanoSlesarik私は私の答えを更新しました、今試してみてください。 – Todor

+0

Todorありがとう! –

関連する問題