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



我想在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不会以这种方式将它保存在我的数据库中。有人知道为什么吗?(甚至form_one和form_two也不会用这种方法保存在数据库中(

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

形式:

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_twoModelForms,而不是ChildModelOneChildModelTwos,因此不能以这种方式使用。

此外,您将ForeignKey命名为p_modelOnep_modelTwo,而不是element_oneelement_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))

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

最新更新