2012-09-17 32 views
0

所以在這個表單集的第一個字段保存&更新就好了......但是當我想添加一個新的對象,這是行不通的這麼好。Django的表單集...保存用戶與現場排除

#Views.py 
def edit_auto(request): 
car = Auto.objects.filter(user=request.user) 
CarFormSet = modelformset_factory(Auto, form=AutoForm, max_num=3) 

if request.method == 'POST': 
    formset = CarFormSet(request.POST, request.FILES, queryset=car) 
    if formset.is_valid(): 
     formset.save(commit=False) 
     formset.user = request.user 
     formset.save() 

    return render_to_response('manage_users.html', {'message':'Success! The user has been updated!'}, context_instance=RequestContext(request)) 
else: 
      formset = CarFormSet(queryset=car) 
return render_to_response('mycar.html', locals(), context_instance=RequestContext(request)) 

#forms.py 
class AutoForm(forms.ModelForm): 
    class Meta: 
     model = Auto 
     user = Auto.user 
     exclude = ('user',) 

它是模板中的東西嗎?如果它是表單的單個實例,則form.user = request.user通常會保存,但這不是。有什麼建議麼?感謝您的幫助。

回答

1

對於用戶分配步驟,只是遍歷該formset。

... 
if request.method == 'POST': 
    formset = CarFormSet(request.POST, request.FILES, queryset=car) 
    if formset.is_valid(): 
     formset.save(commit=False) 
     for form in formset: 
      form.user = request.user 
     formset.save() 
... 
+0

嗯仍然沒有奏效。它仍然表示用戶不能爲空。 – jmitchel3

+0

你的表單聲明中的user = Auto.user行是幹什麼的?這對我來說看起來很可疑/錯誤。你想爲用戶設置一個初始值嗎?如果是這樣,請檢查[this](https://docs.djangoproject.com/en/dev/topics/forms/formsets/#using-initial-data-with-a-formset)。 –

+0

我理解了它(ⅰ除去'用戶= Auto.user'): '如果request.method == 'POST': 表單集= AutoFormSet(request.POST,request.FILES,查詢集=汽車) 如果formset.is_valid(): formset.save(提交= FALSE) 用於表單集形式: form.instance.user = request.user formset.save() 選擇render_to_response回報( 'manage_users.html',{「消息':'!成功的用戶已經更新'},context_instance = RequestContext的(要求))' 感謝您的幫助! – jmitchel3