使用django bootstrap表单编辑django表单

时间:2014-12-28 10:27:35

标签: python django forms twitter-bootstrap

我正在使用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_"}}

我怎样才能实现它? 希望你能理解这个问题。

提前致谢

1 个答案:

答案 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)来简化您的代码。