2011-02-01 55 views
0

我想將我的表單'作者'字段(models.ForeignKey(用戶))的默認值設置爲當前登錄的用戶。我希望在保存條目之前這樣做,因此創建條目時用戶不必自行選擇以便表單進行驗證。將表單'作者'字段設置爲在呈現之前登錄用戶

我試着在我的表單init函數中設置值,但沒有引用請求對象,所以它似乎不可能?

我沒有使用該應用程序的django管理面板。

回答

4

Dynamic initial values爲我工作,對默認Django form view

if request.method == 'POST': 
    form = ContactForm(request.POST) 
    if form.is_valid(): # All validation rules pass 
     # Process the data in form.cleaned_data 
     return HttpResponseRedirect('/thanks/') # Redirect after POST 
else: 
    form = ContactForm(initial={'author': request.user }) 

return render_to_response('contact.html', { 
    'form': form, 

此設置的初始值在未綁定表單的作者下拉列表中,用戶仍然可以在編輯時更改它。

0
+0

似乎沒有工作,我試過form = EntryForm(initial = {'author':request.user.username})和form = EntryForm(initial = {'author':request.user}) – Hanpan 2011-02-01 16:38:53

2

您可以設置當你處理的視圖(請注意,在我的例子中,「MyForm的」類是模式的形式形式author屬性,我排除「作者」字段從形式):

def submit_form(request): 
    if request.method == 'POST': 
     form = MyForm(request.POST) 
     if form.is_valid(): 
      submission = form.save(commit=False) 
      submission.author = request.user 
      submission.save() 
      return http.HttpResponseRedirect('submitted/') 
    else: 
     form = MyForm() 

    context = Context({'title': 'Submit Form', 'form': form, 'user': request.user}) 
    return render_to_response('form.html', context) 
相關問題