Django save() 方法不会保存我的表单并且无法创建新实例

Django save() method won't save my forms and can't create a new instance

我想在我的 Django 视图中保存 2 个表单:

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不会这样保存到我的数据库中。有谁知道为什么? (甚至 form_one 和 form_two 也不会用这种方法保存在数据库中)

注意:这与我在 Another Question

中的问题有关

表格:

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_oneform_twoModelForm,而不是ChildModelOneChildModelTwo,所以你不能那样使用它。

此外,您将 ForeignKey 命名为 p_modelOnep_modelTwo,而不是 element_oneelement_two。因此,您应该使用表单的 result,并在创建 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',
           <b>p_modelOne=item1</b>,
           <b>p_modelTwo=item2</b>
       )
    print((form_one.errors, form_two.errors))

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