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_one
和form_two
是ModelForm
,而不是ChildModelOne
和ChildModelTwo
,所以你不能那样使用它。
此外,您将 ForeignKey
命名为 p_modelOne
和 p_modelTwo
,而不是 element_one
或 element_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
。在那种情况下,通常 重新呈现 具有这些表单的模板,如果正确呈现,它将向客户端显示错误。您还可以在标准输出上打印错误以进行调试。
我想在我的 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_one
和form_two
是ModelForm
,而不是ChildModelOne
和ChildModelTwo
,所以你不能那样使用它。
此外,您将 ForeignKey
命名为 p_modelOne
和 p_modelTwo
,而不是 或 element_one
。因此,您应该使用表单的 result,并在创建 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',
<b>p_modelOne=item1</b>,
<b>p_modelTwo=item2</b>
)
print((form_one.errors, form_two.errors))
如果两个表格中至少有一个无效,则不会保存表格或创建 ParentModel
。在那种情况下,通常 重新呈现 具有这些表单的模板,如果正确呈现,它将向客户端显示错误。您还可以在标准输出上打印错误以进行调试。