2010-12-16 12 views
0

私はこれに関する答えを見つけるのに少し苦労しています:
Djangoフォームを使って、現在の/要求しているユーザを提供する適切な方法は何ですか?Djangoフォーム - ユーザーを検証する適切な方法は?

私のフォームは、次のようになります。

class NewProjectForm(forms.Form): 

    project_name = forms.CharField(max_length=100) 

    def save(self): 
     project = Project(name=self.cleaned_data[project_name]) 
     project.status = 'Working' 
     #TODO project.created_by = ??? 
     project.save() 
     return project 

は私が保存機能へのユーザの第2引数を渡す必要がありますし、私はリクエストからそのを取得したり?

答えて

3

はい、そうです。しかし、あなたはおそらくModelFormにフォームを回した後、あなたのビューで保存モデルを扱うことによって自分自身いくつかの時間を節約することができます:

あなたのビューで
class NewProjectForm(forms.ModelForm): 
    class Meta: 
     model = Project 
     fields = ['name',] 

そして:

if form.is_valid(): 
    new_project = form.save(commit=False) 
    new_project.created_by = request.user 
    new_project.save() 

そうすれば、あなたドンuserオブジェクトを渡すことについて心配する必要はなく、フォーム自体が他のプロパティを設定することになります(project.statusの場合は、フィールド定義でdefault引数を試してみるかもしれません)。

+0

ありがとうございました。どうやら、要求メタデータから認証情報にアクセスすることもできます。 –

+0

これは、プロジェクトにアタッチするユーザーを取得する方法です。私はフォームではなく、ビューでそのような操作を行うことの大きなファンですが、それはあなた次第です。 – girasquid

関連する問題