我想在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_one
和form_two
是ModelForm
s,而不是ChildModelOne
和ChildModelTwo
s,因此不能以这种方式使用。
此外,您将ForeignKey
命名为p_modelOne
和p_modelTwo
,而不是或element_one
。因此,您应该使用表单的结果,并在创建element_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上打印错误,以进行调试。