我正在使用django表单并使用django bootstrap表单(https://django-bootstrap-form.readthedocs.org/en/latest/)用于UI。我可以使用django bootstrap表单在html中创建表单。现在问题是我想编辑表单并更新数据库中的记录。
我的问题是如何使用django bootstrap表单提供编辑表单
例如: 我正在使用
<form role="form" action="/abc/" method="POST">{% csrf_token %}
<div class="form-group">
{{ form.name.errors }}
{{ form.name|bootstrap }}
</div>
</form>
这是第一次填写时的表格。当我点击编辑选项时,我想要相同的用户界面但是值=&#34; the_value_saved_in_the_database&#34;
之类的东西{{ form.name|bootstrap value="_data_"}}
我怎样才能实现它? 希望你能理解这个问题。
提前致谢
答案 0 :(得分:3)
在呈现之前,您需要使用数据加载表单(称为绑定表单)。如果表单表示您存储在模型中的某些数据,则创建ModelForm
并传入要编辑数据的模型实例。
以下是一个例子:
class AddressBook(models.Model):
name = models.CharField(max_length=200)
email = models.EmailField()
class AddressForm(forms.ModelForm):
class Meta:
model = AddressBook
def edit_address(request, pk=None):
existing_entry = AddressBook.objects.get(pk=pk)
form = AddressForm(instance=existing_entry)
return render(request, 'edit.html', {'form': form})
在urls.py
:
url('^address/edit/(?P<pk>\d+)$', 'edit_address', name="edit"),
url('^address/save/$', 'save_address', name="save"),
现在,当您调用视图http://localhost:8000/address/edit/1
时,表单将由主键为1
的条目的数据填充,以供编辑。在模板中,只需渲染表单,然后将其指向保存视图:
<form method="post" action="{% url 'save' %}">
{% csrf_token %}
{{ form|bootstrap }}
</form>
如果您要经常这样做,那么更容易使用基于通用类的视图(例如CreateView
, EditView
)来简化您的代码。