2011-12-22 7 views
0

私は自分のサイトにリストを作成しています。一般的なCreateViewを使用して作成できます。リストのフィールドの1つは所有者(作成者)です。Django:CreateVView.form_validのModelFormにフィールドを追加します。

所有者を作成しようとしているユーザーがすでに所有者であるため、所有者を選択するようユーザーに依頼するのは意味がありません。

したがって、form_classが所有者フィールドを除外する「モデル」パラメータではなく、「Form_class」というCreateViewに渡します。

フォームを保存するには、所有者を追加する必要があります。

私はCreateViewをサブクラス化し、form_validメソッドを追加しましたが、これを行うには問題があります。

はこれまでのところ、私はそれは単純なものでなければなりません

class MyCreateView(CreateView) 
    form_class = ListForm 

def form_valid(self, form): 
    form.??? = self.request.user -->> expression of the left side 
    return super(MyCreateView, self).form_valid(form) 

を得ました。 this threadでは、彼らはself.object.ownerを使用すると言いますが、self.objectはNoneタイプです。

どうすればよいですか? おかげ

答えて

1

あなたはform.instance.owner = request.userを探していると、私はform_validが呼び出された直後PDBを使用してい

+0

スーパー呼び出します。 self.instanceは "DoesNotExist"を返し、self.instanceはAttributeErrorを返します。 'MyCreateView'オブジェクトには属性 'instance'がありません。 ListFormもまたModelForm – duduklein

+0

です。私はform.instance = MyModel()を追加してからform.instance.owner = self.request.userを追加しました。これは実用的ですが、モデルをdbに保存すると、表示されたフォームのすべてのフィールドが空になります。 – duduklein

+0

投稿が間違っています。更新私の答え – ojii

関連する問題