2011-09-29 25 views
-1

我想要將所有在formset中創建的對象與在formset中相同的網頁上創建的對象關聯起來。因此,該代碼的例子是這樣的:同一網頁上的表單和表單集之間的關係

def create_b(request): 
    SpeciesFormSet = modelformset_factory(Species, fields=('common', 'scientific')) 
    if request.method == 'POST': 
     formset = SpeciesFormSet(request.POST) 
     form1 = BForm(request.POST) 
     if form1.is_valid(): 
      objcreate = BModel.objects.create(
           name = form1.cleaned_data['name'], 
           ... 
           ) 
      objcreate.save() 
      for forms in formset.forms: 
       if forms.is_valid(): 
        formset1 = Species.objects.create (
           common = forms.cleaned_data['common'], 
           scientific = forms.cleaned_data['scientific'], 
           BName = form1.cleaned_data['name'] 
           ) 
        formset1.save() 
       else: 
        formset = SpeciesFormSet() 
        form1 = BForm() 
        c = {'SpeciesFormSet' : SpeciesFormSet, 'form1' : form1} 
        c.update(csrf(request)) 
        return render_to_response('Forms/create_b.html', c) 
      return HttpResponseRedirect('/accounts/profile') 
    else: 
     formset = SpeciesFormSet() 
     form1 = BForm() 
    c = {'SpeciesFormSet' : SpeciesFormSet, 'form1' : form1} 
    c.update(csrf(request)) 
    return render_to_response('Forms/create_b.html', c) 

我遇到的問題是,試圖將表單集對象涉及到一個表單時,它告訴我,表單對象實際上並不存在。它在數據庫中創建對象,但不包含任何formset對象。我收到錯誤「無法指定」u「'」:「Species.BName」必須是「BModel」實例。「如果有幫助。此外,關係是一個ForeignKey。無論如何要解決這個問題嗎?謝謝你的時間。

回答

0

從錯誤,它看起來像你分配一個BName屬性應該是一個BModel。或者,您想要使用BModel更改BName,或者您需要修復模型,以便它們與物種的BName匹配。

formset1 = Species.objects.create (
    common = forms.cleaned_data['common'], 
    scientific = forms.cleaned_data['scientific'], 
    BName = form1.cleaned_data['name'] 
) 
formset1.save() 
+0

BName是物種模型中的一個字段,它是通過名稱字段與BModel的ForeignKey關係。模型都很好,只是數據庫沒有足夠快地保存BModel,或者沒有完全確定。 – user971579