2011-02-01 94 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) 
相关问题