Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同一网页上表单和表单集的关系_Python_Django_Forms_Foreign Key Relationship_Formset - Fatal编程技术网

Python 同一网页上表单和表单集的关系

Python 同一网页上表单和表单集的关系,python,django,forms,foreign-key-relationship,formset,Python,Django,Forms,Foreign Key Relationship,Formset,我正在尝试将在表单集中创建的所有对象与在与表单集相同的网页上创建的对象相关联。因此,代码的一个示例如下: def create_b(request): SpeciesFormSet = modelformset_factory(Species, fields=('common', 'scientific')) if request.method == 'POST': formset = SpeciesFormSet(request.POST) fo

我正在尝试将在表单集中创建的所有对象与在与表单集相同的网页上创建的对象相关联。因此,代码的一个示例如下:

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对象与form one关联时,它告诉我form对象实际上并不存在。它在数据库中创建对象,但是没有任何formset对象。我收到错误“无法分配”u“”:“Species.BName”必须是“BModel”实例。如果这有帮助。而且,这种关系是一种外键。有没有办法解决这个问题?感谢您的时间。

从错误中可以看出,您正在指定一个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()

这正是我们的目的。

b名称是物种模型中的一个字段,它是通过名称字段与B模型的外键关系。模型都很好,只是数据库没有足够快地保存BModel,或者没有完全确定。