Python Django save()方法赢得';t保存我的表单并可以';不要创建新实例

Python Django save()方法赢得';t保存我的表单并可以';不要创建新实例,python,django,database,orm,Python,Django,Database,Orm,我想在django视图中保存两个表单: def create_model(request): context = { 'form_one' : Register_modelOne(prefix = 'form_one'), 'form_two' : Register_modelTwo(prefix = 'form_two'), } if request.method == "POST": form_one = Register_modelOne

我想在django视图中保存两个表单:

def create_model(request):
    context = {
    'form_one' : Register_modelOne(prefix = 'form_one'),
    'form_two' : Register_modelTwo(prefix = 'form_two'),
}
if request.method == "POST":
    form_one = Register_modelOne(request.POST, prefix = 'form_one')
    form_two = Register_modelTwo(request.POST, prefix = 'form_two')
    if form_one.is_valid() and form_two.is_valid():
       form_one.save()
       form_two.save()
       ParentModel.objects.create(name = 'mymodel', element_one = form_one, element_two = form_two)
重点是创建一个新的ParentModel,它与modelOne和modelTwo都有manyToMany()关系。但Django不会以这种方式将其保存到我的数据库中。有人知道为什么吗? (甚至表单1和表单2也不使用此方法保存在数据库中)

注意:这与我在中的问题有关

表格如下:

class Register_ModelOne(forms.ModelForm):
class Meta:
    model = ModelOne
    fields = ['title_m', 'tasks']

class Register_ModelTwo(forms.ModelForm):
class Meta:
    model = ModelTwo
    fields = ['title_m', 'tasks']

form\u one
form\u two
ModelForm
s,而不是
ChildModelOne
ChildModelTwo
s,因此不能这样使用它

此外,您将
ForeignKey
s
p\u model one
p\u model two
命名为
element\u one
element\u two
。因此,您应该使用表单的结果,并在创建
ParentModel
时添加这些结果:

if request.method == 'POST':
    form_one = Register_modelOne(request.POST, prefix='form_one')
    form_two = Register_modelTwo(request.POST, prefix='form_two')
    if form_one.is_valid() and form_two.is_valid():
       item1 = form_one.save()
       item2 = form_two.save()
       ParentModel.objects.create(
           name='mymodel',
           p_modelOne=item1,
           p_modelTwo=item2
       )
    print((form_one.errors, form_two.errors))
if request.method==“POST”:
form\u one=Register\u model one(request.POST,prefix='form\u one')
form\u two=Register\u modelTwo(request.POST,prefix='form\u two')
如果形式1.is\u valid()和形式2.is\u valid():
item1=form_one.save()
item2=表单_two.save()
ParentModel.objects.create(
name='mymodel',
p_modelOne=第1项,
p_modelTwo=项目2
)
打印((表格1.错误,表格2.错误))

如果两个表单中至少有一个无效,它将不会保存表单或创建父模型。在这种情况下,通常会使用这些表单重新提交模板,如果呈现正确,将向客户端显示错误。您也可以出于调试目的在标准输出上打印错误。

form\u one
form\u two
ModelForm
s,而不是
ChildModelOne
ChildModelTwo
s,因此不能这样使用它

此外,您将
ForeignKey
s
p\u model one
p\u model two
命名为
element\u one
element\u two
。因此,您应该使用表单的结果,并在创建
ParentModel
时添加这些结果:

if request.method == 'POST':
    form_one = Register_modelOne(request.POST, prefix='form_one')
    form_two = Register_modelTwo(request.POST, prefix='form_two')
    if form_one.is_valid() and form_two.is_valid():
       item1 = form_one.save()
       item2 = form_two.save()
       ParentModel.objects.create(
           name='mymodel',
           p_modelOne=item1,
           p_modelTwo=item2
       )
    print((form_one.errors, form_two.errors))
if request.method==“POST”:
form\u one=Register\u model one(request.POST,prefix='form\u one')
form\u two=Register\u modelTwo(request.POST,prefix='form\u two')
如果形式1.is\u valid()和形式2.is\u valid():
item1=form_one.save()
item2=表单_two.save()
ParentModel.objects.create(
name='mymodel',
p_modelOne=第1项,
p_modelTwo=项目2
)
打印((表格1.错误,表格2.错误))

如果两个表单中至少有一个无效,它将不会保存表单或创建父模型。在这种情况下,通常会使用这些表单重新提交模板,如果呈现正确,将向客户端显示错误。您还可以出于调试目的在标准输出上打印错误。

什么是
注册\u modelOne
,等等?
模型表单
s?注册\u modelOne是一种类表单,我将把它包括在内。注意:我已经在链接中更详细地解释了这个问题,具体取决于您如何将表单集成到HTML中,您将只收到一个表单的内容,即发送操作来自的表单。因此,如果您有两个
块,那么不要将这两个块都排除在外,什么是
Register\u modelOne
,等等?
ModelForm
s?Register\u modelOne是一个类表单,我将把它包括在内。注意:我已经在链接中更详细地解释了这个问题,具体取决于您如何将表单集成到HTML中,您将只收到一个表单的内容,即发送操作来自的表单。因此,如果您有两个
块,请不要将两者都排除在外以使其有效,是的,这是有效的。我不知道调用方法和调用其方法的结果之间的区别。谢谢,这很有帮助是的,这很有效。我不知道调用方法和调用其方法的结果之间的区别。谢谢,这很有帮助