如何在 django 模板中预填充 ModelForm
How to prepopulate a ModelForm in the django template
我是 Django 的新手。
我正在尝试在 'example.com/contacts/10/edit' 创建一个表单,允许您编辑联系人的详细信息,然后将您带到该联系人的详细信息页面(示例。com/contacts/10)。在这些情况下,10 是默认 pk。
我已经成功地显示了一个编辑数据库中联系人的表单,但是模板中的表单是空的,我不知道如何用数据库中的数据填充表单。
我使用的 ModelForm - AddForm() - 与我用来添加新联系人的相同
这是我的代码,这里可能有一些多余的东西,请多多包涵。感谢所有帮助。
views.py
def EditContact(request, pk):
instance = get_object_or_404(Contact, id=pk)
if request.POST:
form = AddForm(request.POST or None, instance=instance)
if form.is_valid():
form.save()
return HttpResponseRedirect('/contacts/')
else:
form = AddForm()
return render(request, 'contacts/edit.html', {'form': form})
模板中的表单:
<form action="" method="POST"> {% csrf_token %}
<table>
<p> {{ form.as_ul }}</p>
</table>
<input type="submit" value="Post">
</form>
我最近也阅读了有关通用编辑视图的内容,也许有人可以告诉我它们是否更适合我想要实现的目标——即从数据库中添加、编辑和删除联系人。谢谢
您已经在 request.POST
版块中这样做了。
您还必须在 else 块中发送 instance
参数
def EditContact(request, pk):
instance = get_object_or_404(Contact, id=pk)
if request.method == 'POST': #It is better to explicitly check for method instead of the dictionary
form = AddForm(request.POST, instance=instance) #No need of the "or None" here
if form.is_valid():
form.save()
return HttpResponseRedirect('/contacts/')
else:
form = AddForm(instance=instance) #Here is the change
return render(request, 'contacts/edit.html', {'form': form})
我是 Django 的新手。 我正在尝试在 'example.com/contacts/10/edit' 创建一个表单,允许您编辑联系人的详细信息,然后将您带到该联系人的详细信息页面(示例。com/contacts/10)。在这些情况下,10 是默认 pk。
我已经成功地显示了一个编辑数据库中联系人的表单,但是模板中的表单是空的,我不知道如何用数据库中的数据填充表单。
我使用的 ModelForm - AddForm() - 与我用来添加新联系人的相同
这是我的代码,这里可能有一些多余的东西,请多多包涵。感谢所有帮助。
views.py
def EditContact(request, pk):
instance = get_object_or_404(Contact, id=pk)
if request.POST:
form = AddForm(request.POST or None, instance=instance)
if form.is_valid():
form.save()
return HttpResponseRedirect('/contacts/')
else:
form = AddForm()
return render(request, 'contacts/edit.html', {'form': form})
模板中的表单:
<form action="" method="POST"> {% csrf_token %}
<table>
<p> {{ form.as_ul }}</p>
</table>
<input type="submit" value="Post">
</form>
我最近也阅读了有关通用编辑视图的内容,也许有人可以告诉我它们是否更适合我想要实现的目标——即从数据库中添加、编辑和删除联系人。谢谢
您已经在 request.POST
版块中这样做了。
您还必须在 else 块中发送 instance
参数
def EditContact(request, pk):
instance = get_object_or_404(Contact, id=pk)
if request.method == 'POST': #It is better to explicitly check for method instead of the dictionary
form = AddForm(request.POST, instance=instance) #No need of the "or None" here
if form.is_valid():
form.save()
return HttpResponseRedirect('/contacts/')
else:
form = AddForm(instance=instance) #Here is the change
return render(request, 'contacts/edit.html', {'form': form})