【问题标题】:Editing django forms using django bootstrap forms使用 django 引导表单编辑 django 表单
【发布时间】:2015-02-24 20:28:02
【问题描述】:

我正在使用 django 表单,并且正在使用 django 引导表单(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> 

这是第一次填写时的表格。当我点击编辑选项时,我想要相同的 UI,但使用 value="the_value_saved_in_the_database" 类似

{{ form.name|bootstrap value="_data_"}}

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

提前致谢

【问题讨论】:

    标签: python django forms twitter-bootstrap


    【解决方案1】:

    在渲染表单之前,您需要使用数据加载表单(称为绑定表单)。如果表单代表您存储在模型中的一些数据,则创建一个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)来简化代码会更容易。

    【讨论】:

    • 注意,问题和答案都不是特定于引导程序的。
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    • 2018-09-19
    • 2018-10-06
    • 2016-10-23
    • 2010-12-29
    相关资源
    最近更新 更多