Связь между формой и формой на одной веб-странице - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь связать все объекты, созданные в наборе форм, с объектом, созданным на той же веб-странице, что и набор форм.Итак, пример кода:

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 с формой, он говорит мне, что объект формы на самом делесуществовать.Однако он создает объект в базе данных, но не один из объектов formset.Я получаю сообщение об ошибке «Невозможно назначить« u »»: «Species.BName» должен быть экземпляром «BModel». "если это поможетКроме того, отношения являются ForeignKey.Есть ли способ решить это?Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Этот точный шаблон - то, для чего наборы встроенных моделей .

0 голосов
/ 30 сентября 2011

Из-за ошибки похоже, что вы назначаете BName, где свойство должно быть BModel. Либо вы хотите изменить BName с помощью BModel, либо вам нужно исправить свои модели, чтобы они соответствовали BName для видов.

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