-1

フォームセットで作成されたすべてのオブジェクトを、フォームセットと同じWebページで作成されたオブジェクトに関連付けようとしています。したがって、コードの例は次のとおりです。

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)

私が抱えている問題は、フォームセットオブジェクトをフォームオブジェクトに関連付けようとすると、フォームオブジェクトが実際には存在しないことを通知することです。ただし、データベースにオブジェクトを作成しますが、フォームセットオブジェクトは作成しません。「「u」を割り当てることができません」というエラーが表示されます。「Species.BName」は「BModel」インスタンスである必要があります。それが助けになるなら。また、関係はForeignKeyです。これを解決する方法はありますか?御時間ありがとうございます。

4

2 に答える 2

1

この正確なパターンは、インライン モデル フォームセットの目的です。

于 2011-09-29T20:48:23.817 に答える
0

エラーから、プロパティが BModel であるはずの場所に BName を割り当てているようです。BModel を使用して BName を変更するか、Species の BName と一致するようにモデルを修正する必要があります。

formset1 = Species.objects.create (
    common = forms.cleaned_data['common'],
    scientific = forms.cleaned_data['scientific'],
    BName = form1.cleaned_data['name']
)
formset1.save()
于 2011-09-29T20:03:59.360 に答える