2013-05-21 42 views
-1

我有這樣的錯誤:如何保存當前登錄用戶? USER_ID不能爲null

appname_mymodel.user_id may not be NULL

def form_view(request): 
    user = request.user 
    f_form = FForm(request.POST or None, request.FILES or None) 
    if request.method == "POST": 
     if f_form.is_valid(): 
      f_form.user = user 
      f_form.save() 
      return HttpResponseRedirect('/thanks/') 

    return render_to_response('upload.html', {'f_form': f_form}, context_instance=RequestContext(request)) 

forms.py:

class FForm(ModelForm): 
    class Meta: 
     model = MyModel 
     exclude =['user'] 

如何保存當前登錄的用戶?

回答

1

該表格沒有user屬性,因此無法分配給它。你應該做的卻是:

if f_form.is_valid(): 
    my_model = f_form.save(commit=False) 
    my_model.user = user 
    my_model.save() 

這樣的形式將構造一個MyModel實例,但不會嘗試將它保存到數據庫中。然後你可以填寫user字段並保存。

0

還可以提供必要的數據作爲一個實例參數:

f_form = FForm(request.POST or None, request.FILES or None, \ 
     instance = MyModel(user=user)) 
if request.method == "POST": 
    if f_form.is_valid(): 
     f_form.save() 
     return HttpResponseRedirect('/thanks/') 
相關問題